正则表达式简单语法及常用正则表达式

基本符号:

^  表示匹配字符串的开始位置  (例外  用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)

$  表示匹配字符串的结束位置

*  表示匹配 零次到多次

+  表示匹配 一次到多次 (至少有一次)

?  表示匹配零次或一次

.  表示匹配单个字符 

|  表示为或者,两项中取一项

(  ) 小括号表示匹配括号中全部字符

[  ] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]

{  } 大括号用于限定匹配次数  如 {n}表示匹配n个字符  {n,}表示至少匹配n个字符  {n,m}表示至少n,最多m

\  转义字符 如上基本符号匹配都需要转义字符   如 \*  表示匹配*号

\w 表示英文字母和数字  \W  非字母和数字

\d  表示数字   \D  非数字

一些简单的说明与案例

 1.正则表达式的匹配规则

1字面量字符

大部分字符在正则表达式中,就是字面的含义,比如/a/匹配a,/b/匹配b。如果在正则表达式之中,

某个字符只表示它字面的含义(就像前面的a和b),那么它们就叫做“字面量字符”(literal characters)。

 案例:

/dog/.test('old dog') // true

 上面代码中正则表达式的dog,就是字面量字符,所以/dog/匹配old dog,因为它就表示d、o、g三个字母连在一起。

 2.元字符

  表示匹配单个字符

2.1 点字符(.)

匹配除回车(\r)、换行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符。

// 注意,对于码点大于0xFFFF字符,点字符不能正确匹配,会认为这是两个字符。

console.log(/c.t/.test('cbt')); //true

console.log(/2.9/.test('269')) //true

2.2位置字符

 ^ 表示匹配字符串的开始位置(例外 用在中括号中[] 时, 可以理解为取反, 表示不匹配括号中字符串)

console.log(/^9654/.test(9654)) //true

console.log(/^9654/.test('9654666')) //true

console.log(/^9654/.test('965')) //false

console.log(/^[9654]/.test('8656')) //true 匹配以括号内数字开头都为true

console.log(/[^9654]/.test('9')) //false

console.log(/[^]/.test('9')) //true 如果方括号内没有其他字符,即只有[^],就表示匹配一切字符,其中包括换行符。相比之下,点号作为元字符(.)是不包括换行符的

$ 表示匹配字符串的结束位置

console.log(/9654$/.test(9654)) //true

console.log(/^9654$/.test('9654666')) //false // 从开始位置到结束位置只有9654

console.log(/[9654]$/.test('965')) //true

console.log(/[9654$]/.test('5')) //true

// 2.3选择符 (|) 竖线符号(|)在正则表达式中表示“或关系”(OR),即cat|dog表示匹配cat或dog。

// \、\*、+、?、()、[]、{}

console.log(/zjl|zmf|dwb/.test('dwb'));

 

 3.转义符

正则表达式中那些有特殊含义的元字符,如果要匹配它们本身,就需要在它们前面要加上反斜杠。比如要匹配+,就要写成\+。c

onsole.log(/2+4/.test('2+4')); //false

console.log(/2\+4/.test('2+4')); //true

// 正则表达式中,需要反斜杠转义的,一共有12个字符:^、.、[、$、(、)、|、*、+、?、{和\。需要特别注意的是,

// 如果使用RegExp方法生成正则对象,转义需要使用两个斜杠,因为字符串内部会先转义一次。

console.log((new RegExp('1\+1')).test('1+1'))// false

console.log((new RegExp('1\\+1')).test('1+1'));//true

4.特殊字符

\cX 表示Ctrl - [X],其中的X是A - Z之中任一个英文字母,用来匹配控制字符。

 [\b] 匹配退格键(U + 0008) ,不要与\b混淆。

 \n 匹配换行键。

\r 匹配回车键。

 \t 匹配制表符 tab(U + 0009)。

 \v 匹配垂直制表符(U + 000B)。

 \f 匹配换页符(U + 000C)。

 \0 匹配null字符(U + 0000)。

 \xhh 匹配一个以两位十六进制数(\x00 -\xFF)表示的字符。

 \uhhhh 匹配一个以四位十六进制数(\u0000 -\uFFFF)表示的 Unicode 字符。

 

 5.字符类

字符类(class)表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内,比如[xyz] 表示x、y、z之中任选一个匹配。

 5.1 脱字符(^)

脱字符只有在字符类的第一个位置才有特殊含义,否则就是字面含义。

5.2 连字符(-)

用来提供简写形式,表示字符的连续范围。

console.log(/a-z/.test('b')); // false

console.log(/[a-z]/.test('b')); // true

// [0 - 9.,]

// [0 - 9a - fA - F]

// [a - zA - Z0 - 9 -]

// [1 - 31]

// 上面代码中最后一个字符类[1-31],不代表1到31,只代表1到3。

6.预编译模式

\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 匹配非词边界,即在词的内部。


 

7.重复类

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

console.log(/lo{2}k/.test('look')); // true

console.log(/ lo{ 2, 5 } k /.test('loooooook')); // true

8.量词符

量词符用来设定某个模式出现的次数。

 ?问号表示某个模式出现0次或1次,等同于{ 0, 1 } 。

* 星号表示某个模式出现0次或多次,等同于{ 0,} 。

+ 加号表示某个模式出现1次或多次,等同于{ 1,} 。

// t 出现0次或1次

console.log(/ t ? est /.test('test')) // true

console.log(/ t ? est /.test('est')) // true

// t 出现1次或多次

console.log(/ t + est /.test('test'))// true

console.log(/ t + est /.test('ttest')) // true

console.log(/ t + est /.test('est')) // false

// t 出现0次或多次

console.log(/ t * est /.test('test')) // true

console.log(/ t * est /.test('ttest')) // true

console.log(/ t * est /.test('tttest')) // true

console.log(/ t * est /.test('est')) // true

 9.贪婪模式

上面的三个量词符,默认情况下都是最大可能匹配,即匹配直到下一个字符不满足匹配规则为止。这被称为贪婪模式。

let s = 'qqq';

console.log(s.match(/q+/));

// 去除贪婪模式的方法是在模式结尾添加?

console.log(s.match(/q+?/));

 10.修饰符

修饰符(modifier)表示模式的附加规则,放在正则模式的最尾部。修饰符可以单个使用,也可以多个一起使用。

10.1 g 修饰符

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

var regex = /b/;

var str = 'abba';

console.log(regex.test(str)); // true

console.log(regex.test(str)); // true

console.log(regex.test(str));// true



var regex2 = /b/g;

var str = 'abba';

console.log(regex2.test(str)); // true

console.log(regex2.test(str)); // true

console.log(regex2.test(str)); // false

10.2 i 修饰符

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

console.log(/abc/.test('ABC')) // false

console.log(/abc/i.test('ABC')) // true

10.3 m 修饰符

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

console.log(/world$/.test('hello world\n')) // false

console.log(/world$/m.test('hello world\n')) // true

11.组合模式 :正则表达式的括号表示分组匹配,括号中的模式可以用来匹配分组的内容。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值