JavaScript正则表达式

基本概念

按某种规则去匹配符合条件的字符串,这种规则就是正则表达

RegExp对象  //

\b 单词边界 g 全局匹配 i忽略大小写 m多行匹配

构造函数

var reg = new RegExp('\\bis\\b', 'g');

元字符 特殊含义字符  \cX  Ctrl+X

字符类 [abc]

字符类取反 [^abc]

范围类 数字[0-9-] 字母[a-zA-Z]  //匹配横线在最后加一个-

预定义类 \d = [0-9] \D = [^0-9] \s =  空白符[\t\n\x0B\f\r]  \w = [a-zA-Z_0-9]单词字符(字母数字下划线)  //注:大写为取反

量词 ?0/1  +1/n  *0/n  {n}n  {n,m}n-m  {n,}n++  {0,n}最多n

贪婪模式    '12345678'.replace(/\d{3,6}/g,'X') 尽量多的匹配 结果X78

非贪婪模式(量词后加?)  '12345678'.replace(/\d{3,6}?/g,'X') 尽量少的匹配 结果XX78

分组 (zxc){3}

或 |  byr(on|ca)sper  结果 byronsper  byrcasper 都可以匹配法到

反向引用 2015-12-25 ==> 12/25/2015  '2015-12-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1')

忽略分组  前面加?:  (?:Byron).(ok)  ok为$1

正则表达式从文本头部像尾部开始解析,文本尾部为前。

前瞻 向前检查是否符合断言 符合正向匹配

后顾 向后检查(js不支持)

正想前瞻:exp(?=assert)  \w(?=\d)  单词字符后面是数字 匹配该单词

负向前瞻:exp(?!assert)  \w(!=\d)  相反

对象属性: global ignoreCase multiline 默认false

lastIndex:下一次搜索的开始位置

score:正则表达式的文本对象

函数(test&exec)

RegExp.protatype.test(str)  测试有无匹配结果 true false;

例子:var reg = /\w/;  reg.test('a'); return true; teg.test('$'); return false;

RegExp.protatype.exec(str).index(匹配文本的第一个字符).toString()(文本,组内容,第二个组内容,···);

var reg = /\d(\w)\d/g;

var ts = '$1a2b3c4d';

while(ret = reg.exec(ts)){

console.log(ret);

} //[1a2,a]\n[3c4,c]

字符串对象方法

String.protatype.search(reg)  检索字符串中指定子字符串或正则表达式相匹配的子字符串,返回第一个匹配结果 查不到返回-1 不执行全局(忽略g)且每次从第一个字符开始

(数字(会尝试转成正则),字符串,正则表达式都可以)

String.protatype.match(reg)  找到一个或多个与regexp匹配的文本 g很重要

//注:非全局与exec 相同  string和 reg掉了个个儿。

全局只返回字符串数组  不返回分组信息  没有index,lastIndex属性

ts.match(reg);//

String.protatype.split(reg)

'a,b,c,d'.split(',')//(/,/) =>  ["a","b","c","d"]

'a1b2c3d4e'.split(/\d/g) => ["a","b","c","d","e"]

String.protatype.replace(reg,funtion(match,group1,group2,index,origin){

return group1+group3;

});//group2会消失

// match 匹配到的字符串

// group 分组(没有的话不写)

// index 匹配的第一个字符位置

// origin 原字符串

你可能感兴趣的:(JavaScript正则表达式)