首页 > 代码库 > js正则 (二)

js正则 (二)

//    正则  匹配规则
//1)点字符(.)
//点字符(.)匹配除回车(\r)、换行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符。

//(2)位置字符
//^ 表示字符串的开始位置
//$ 表示字符串的结束位置
// test必须出现在开始位置
///^test/.test(‘test123‘) // true

// test必须出现在结束位置
///test$/.test(‘new test‘) // true

// 从开始位置到结束位置只有test
///^test$/.test(‘test‘) // true
///^test$/.test(‘test test‘) // false

//转义符
//正则模式中,需要用斜杠转义的,一共有12个字符:^、.、[、$、(、)、|、*、+、?、{和\\。
// 需要特别注意的是,如果使用RegExp方法生成正则对象,
// 转义需要使用两个斜杠,因为字符串内部会先转义一次。


//字符类
//如果方括号内的第一个字符是[^],则表示除了字符类之中的字符,其他字符都可以匹配。比如,[^xyz]表示除了x、y、z之外都可以匹配。
//如果方括号内没有其他字符,即只有[^],就表示匹配一切字符,其中包括换行符,而点号(.)是不包括换行符的。

//预定义模式
//\d 匹配0-9之间的任一数字,相当于[0-9]。
//\D 匹配所有0-9以外的字符,相当于[^0-9]。
//\w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]。
//\W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]。
//\s 匹配空格(包括制表符、空格符、断行符等),相等于[\t\r\n\v\f]。
//\S 匹配非空格的字符,相当于[^\t\r\n\v\f]。
//\b 匹配词的边界。
//\B 匹配非词边界,即在词的内部。


// \s的例子
///\s\w*/.exec(‘hello world‘) // [" world"]
//
//// \b的例子
///\bworld/.test(‘hello world‘) // true
///\bworld/.test(‘hello-world‘) // true
///\bworld/.test(‘helloworld‘) // false
//
//// \B的例子
///\Bworld/.test(‘hello-world‘) // false
///\Bworld/.test(‘helloworld‘) // true
//\b表示词的边界,所以“world”的词首必须独立(词尾是否独立未指定),才会匹配
//var html = "<b>Hello</b>\n<i>world!</i>";
//
///[\S\s]*/.exec(html)[0]
// "<b>Hello</b>\n<i>world!</i>"
//上面代码中,[\S\s]指代一切字符。


//重复类
//模式的精确匹配次数,使用大括号({})表示。{n}表示恰好重复n次,{n,}表示至少重复n次,{n,m}表示重复不少于n次,不多于m次。

//量词符
//? 问号表示某个模式出现0次或1次,等同于{0, 1}。
//* 星号表示某个模式出现0次或多次,等同于{0,}。
//+ 加号表示某个模式出现1次或多次,等同于{1,}。

//修饰符

//g修饰符
//
//默认情况下,第一次匹配成功后,正则对象就停止向下匹配了。g修饰符表示全局匹配(global),
//加上它以后,正则对象将匹配全部符合条件的结果,主要用于搜索和替换。

//var regex = /b/g;
//var str = ‘abba‘;
//
//regex.test(str); // true
//regex.test(str); // true
//regex.test(str); // false
//上面代码中,正则模式含有g修饰符,每次都是从上一次匹配成功处,
//开始向后匹配。因为字符串“abba”只有两个“b”,所以前两次匹配结果为true,第三次匹配结果为false。

//i修饰符
//默认情况下,正则对象区分字母的大小写,加上i修饰符以后表示忽略大小写(ignorecase)。

//m修饰符
//m修饰符表示多行模式(multiline),会修改^和$的行为。默认情况下(即不加m修饰符时),
//^和$匹配字符串的开始处和结尾处,加上m修饰符以后,^和$还会匹配行首和行尾,即^和$会识别换行符(\n)。

js正则 (二)