javascript的正则表达式学习
关于反向引用
复制代码 代码如下:
// 测试函数
function matchReg(reg, str) {
var result = str.match(reg);
if(result) {
console.dir(result);
} else {
console.log('match failed');
}
}
var reg = /([A-Za-z]{0,6})\1/;
var str = 'AndrewAndrew';
// 测试通过
matchReg(reg, str);
//通过(?:pattern)的方式,不记录子表达式匹配的内容(本例中为Andrew)
//所以\1对子表达式匹配内容的引用失败了
//注意:这里强调的是子表达式所匹配的内容,而不是子表达式本身
reg = /(?:[a-zA-Z]{0,6})\1/;
// 测试不通过
matchReg(reg, str);
关于子表达式的定义
var parse_number = /^-?\d+(?:\.\d*)?(?:e[+\-]?\d+)?$/i;
这是一个解析数字的正则表达式,其中的子表达式有(?:\.\d*)和(?:e[+\-]?\d+)
\.和\-分别是对.和-的转义表达
顺便复习下.表示除换行符以外的其他字符
-一般用于[a-zA-Z0-9]表示匹配范围
如果其中没?:例如(\.\d*)那么按照先后顺序,反向引用的关系如下
\1-->(\.\d*)
\2-->(e[+\-]?\d+)
如果有更多的话,就以此类推\3 \4 \5....
再次强调,引用的是子表达式匹配的内容,是具体的文本
关于正向预查
复制代码 代码如下:
var reg = /I like (?=shanghai)/;
var str = 'I like shanghai';
matchReg(reg, str); //测试通过
str = 'I like beijing';
matchReg(reg, str); //不通过
跑下上面的代码,就马上理解什么算是正向预查了,如上面的例子,通过(?=pattern)的形式,正则 表达式预测下后面的内容是不是符合要求,如果是那就顺利匹配.
相对地,(?!=pattern)的使用意图正好与(?=pattern)相反,就不复述了
关于贪心和非贪心匹配模式
复制代码 代码如下:
// 贪心
var reg = /\d{1,}/;
var str = '1999';
matchReg(reg, str); // result[0]为1999 能多匹配就多匹配
// 非贪心
reg = /\d{1,}?/;
matchReg(reg, str); // result[0]为1 只匹配了一个
从上面的结果很容易看出"贪心"和"非贪心"的含义
pattern?这就表明非贪心匹配模式,一般情况就是贪心的
关于Regexp对象exec函数返回的结果
复制代码 代码如下:
// 关于返回结果是个什么
// matchReg函数中console.dir(result)能说明问题,firebug中一看便知
关于string的replace函数
function camelize(str) {
return str.replace(/-(\w)/g, function(inputStr, p1) {
console.log(p1);
return p1.toUpperCase();
});
}
console.log(camelize('background-color'));
function uncamelize(str, sep) {
sep = sep || '-';
return str.replace(/([a-z])([A-Z])/g, function(inputStr, p1, p2) {
console.log('p1:%s, p2:%s', p1, p2);
return p1 + sep + p2;
});
}
console.log(uncamelize('backgroundColor', '-'));
上面两个例子,主要用于说明replace函数的用法,当然还有search,split等函数可以充分利用正则表达式的优势
关于javascript正则表达式的最佳实践
就一句话:尽量的精简,不要复杂,利于读懂和维护!
javascript的正则表达式学习的更多相关文章
- 深入浅出的javascript的正则表达式学习教程
深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...
- javascript笔记——正则表达式学习笔记
indexof 查找 substring 获取字符串 [) charAt 获取某个字符 split 分割字符串,获得数组 \s:空格 \S:非空格 \d:数字 \D:非数字 \w:字符 \W:非字符 ...
- 深入浅出Javascript的正则表达式
深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...
- JavaScript正则表达式学习笔记(二) - 打怪升级
本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...
- javascript正则表达式 - 学习笔记
JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...
- javascript中的正则表达式学习
一.前言 关于正则表达式自身的语法这里不做过多介绍(详情可参见http://www.php100.com/manual/unze.html),这里仅仅解释javascript中和正则表达式相关的几个方 ...
- 如何使用JavaScript和正则表达式进行数据验证
利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作,下面与大家分享下如何使用JavaScript和正则表达式进行数据验证,感兴趣的朋友可以参考下哈 数据验证 ...
- javascript之正则表达式基础知识小结
javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料. 元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要 ...
- 【学习笔记】JavaScript的基础学习
[学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...
随机推荐
- (十四)Maven聚合与继承
1.Maven聚合 我们在平时的开发中,项目往往会被划分为好几个模块,比如common公共模块.system系统模块.log日志模块.reports统计模块.monitor监控模块等等.这时我们肯定会 ...
- koala预编译工具的使用
Koala是一个开源的预处理语言图形编译工具,目前已支持Less.Sass.Compass与CoffeeScript. 安装Koala 在Koala官网根据你的系统平台下载对应的版本.Linux系统要 ...
- Spring:ApplicationContext (2)
在使用Spring时,通常会配置一个applictioncontext.xml 来指定ApplicationContext的相关信息. 当使用SpringMVC时,还会再另外指定一个[server-n ...
- RemodelanyWhere11.0.2673版本下载
百度云盘链接:http://pan.baidu.com/s/1geL5lez 密码:hisq 原文转载至:http://blog.sun0816.com/13623.html
- shell编程常用的截取字符串操作
1. 常用的字符串操作 1.1. 替换字符串:$ echo ${var/ /_}#支持正怎表达式 / /表示搜索到第一个替换,// /表示搜索到的结果全部替换. ...
- “会”和 "好”纯粹是两个概念
你会吗? 如果我现在问下大家你会OOP 吗?你会OOD吗? 你知道SOLID吗?你会在实际工作中运用这些原则吗? 你知道模式吗,你会在实际项目中适时引入合理的设计模式来解决项目中的代码坏味吗? 你知道 ...
- 优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码)。
在您阅读本文前,先需要告诉你的是:即使是本文优化过的算法,DCT去噪的计算量依旧很大,请不要向这个算法提出实时运行的苛刻要求. 言归正传,在IPOL网站中有一篇基于DCT的图像去噪文章,具体的链接地址 ...
- github常用操作
1.创建一个新的repository: $cd ~/hello-world //到hello-world目录,本地目录名与repository的名字不一定相同 $git init ...
- Java监听器
监听器 1.概念 监听器:主要是用来监听特定对象的创建,属性的变化的!,本质上却是一个实现特定接口的普通java类! 对象分为自己创建自己使用的,和别人创建自己用的,自己创建的不需要监听,值需要取监听 ...
- swt shell设置窗口位于屏幕中间
/** * 设置窗口位于屏幕中间 * @param shell 要调整位置的窗口对象 */ public static void center(Shell shell) ...