JavaScript正则

  • 有关正则:
  1. \d表示匹配数字
  2. ()表示分组,分组一般和$1 $2...一起使用表示匹配的第一个分组第二个分组JavaScript正则表达式之分组匹配 / 反向引用
  3. []表示范围,eg:[0-9] [a-z] [A-Z],组合类则为[0-9a-z]
  4. 量词:{m}m次,{m,n}大于等于m小于等于n,{m,}表示大于等于m次,?={0,1},+={1,}

    notice:

    没有{1+}这种操作,只有+ 或者{1,}这种表示大于等于1个,而且通常+不会单独写{}

    *:匹配前一个表达式 0 次或多次。等价于 {0,}

    . :(小数点)默认匹配除换行符之外的任何单个字符。

    例如,/.n/ 将会匹配 "nay, an apple is on the tree" 中的 'an' 和 'on',但是不会匹配 'nay'。

     

    //邮箱匹配(这种简写版其实会有一些纰漏)[-\w]==[a-zA-Z0-9_-]
    /\w[-\w]*@(\w+\.)+[A-Za-z]+/.test(str);
    
    //正规
    /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(str)

    \w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'。

    \s 匹配任意的空白符

    \d 匹配数字

    \b 匹配单词的开始或结束
  5. ^开头$结尾,而对于^有两点需要介绍
    ^ 的意思是从左向右匹配,从字符串的开头开始匹配;
    如果^在 [ ]中出现,那么就是非的意思了,不再是从开头匹配的意思
  6. g global全局匹配 i ignorCase忽略大小写 m mutiple允许多行匹配
  7. replace第二个参数使用$必须加引号
  8. 有关?=的含义:

(?=)和(?!);零宽正向断言和负向断言,括号内表示某个位置右边必须和=右边匹配上,或者不和!后的字符匹配。

exp1(?=exp2) 查找exp2前面的exp1

exp1(?!exp2) 查找后面不是exp2的exp1

var pattern=/str(?=ings)ing/; 
console.log("strings.a".match(pattern)); 
console.log("strings.a".match(/string(?=s)/));
console.log("string_x".match(pattern));
console.log("string_x".match(/string(?=s)/)); 

注:

  • 这里一定要用到分组()还有全局匹配g,类似一个遍历的过程。
  • 如果有负号的话,建议像处理dot一样处理一下即可。

其他:

?的其他用法:非贪婪匹配:

  • 默认我们不用?为贪婪模式,如对 "123abc" 使用 /\d+/ 将会匹配 "123"
  • ?紧跟在任何量词 *、 +、? 或 {} 的后面,将会使量词变为非贪婪(匹配尽量少的字符),如使用 /\d+?/ 则只会匹配到 "1"

  8. 关于\1\2的理解:

正则\1\2和\\1的理解
‘\1’ 匹配的是 字符 ‘\1’ 。 (因为 ‘\’ 匹配字符 ‘\’ ) 
‘\2’ 匹配的是 字符 ‘\2’

‘\1’ 匹配的是 所获取的第1个()匹配的引用。例如,’(\d)\1’ 匹配两个连续数字字符。如33aa 中的33 
‘\2’ 匹配的是 所获取的第2个()匹配的引用。 
例如,’(\d)(a)\1’ 匹配第一是数字第二是字符a,第三\1必须匹配第一个一样的数字重复一次,也就是被引用一次。如9a9 被匹配,但9a8不会被匹配,因为第三位的\1必须是9才可以,

‘(\d)(a)\2’ 匹配第一个是一个数字,第二个是a,第三个\2必须是第二组()中匹配一样的,如,8aa被匹配,但8ab,7a7不会被匹配,第三位必须是第二组字符的复制版,也是就引用第二组正则的匹配内容。

注:参考MDN:注意 \1\2、...、\n 是用在正则表达式的匹配环节,而在正则表达式的替换环节,则要使用像 $1$2、...、$n 这样的语法,

9. 正则表达式标志

 
标志描述
g全局搜索。
i不区分大小写搜索。
m多行搜索。
s允许 . 匹配换行符。
u使用unicode码的模式进行匹配。
y执行“粘性”搜索,匹配从目标字符串的当前位置开始,可以使用y标志。

 

 

 

正则表达式的另外应用:字符串前面后面去空格:

const TRIM_REGX = /(^\s+)|(\s+$)/g;//因为是去首尾空格所以一定需要^和$,注意是多个空格所以一定要用+,表示出现1次及一次以上≥1,也就是{1,}  |表示或操作符
var myres0=' ScriptOJ   '.replace(TRIM_REGX, '') // => ScriptOJ
console.log(myres0.length);

 

 

运行结果:

有关于JavaScript字符串方法使用正则表达式请移步我的另一篇文章:

JavaScript字符串方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值