重温正则表达式,转义字符的自我剖析
首先咔给乡亲们推荐一波gitlab正则表达式学习网址,学习正则表达式的简单方法,这是在github两万多星的项目,不是内容很高深,而是很通俗易懂,很实用,里面附带正则验算网站
下面说说我的新的体会
元字符都不难理解,唯手熟尔,然后我一直曾经一直不甚明白的一个就是转义字符 \ ,转义转义,转换含义,网上很多教程一些博客都比较官方或者一带而过,我必须站出来伸张正义了,
首先,转义字符转的是谁,字符还是数字还是文字,转义字符不是转数字也不是转文字,转的是特殊字符
不要嫌啰嗦,只是为了以后回顾能更顺畅
什么是特殊字符,特殊字符就是有特殊含义的字符,特殊含义的字符?啥,比如,,,上面的元字符,
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。 |
* | 匹配前面的子表达式零次或多次 |
+ | 匹配前面的子表达式一次或多次 |
显然特殊字符就是这个字符在正则表达式中比如 ?在 /[T]?he/ 中代表 T这个字符出现最多一次,这是 ?的特殊含义,
(注意:是正则表达式,认准正则老字号,为什么,咱们这转义符元字符就是正则表达式里的东西,离开了正则那还搞毛)
上面的元字符都有特殊含义,所以我们可以归类为特殊字符
咋们回到转义字符,问题来了,转义字符怎么用,应用场景是什么,假设你有这种情况,
var reg = 'The fat cat sa?t on the mat.'
在上面的字符串中,我想匹配reg中的 sa? ,咋整呢 ,我直接咔 reg.match(/sa?/), 显然是没有我想要的结果,,这个?号在这里并不是按照我所想的作为一个字符去解析的,而是根据它(?)元字符的特殊含义去解析的。然而我想让它简简单单得作为一个字符去解析,安分地当一个字符问号 "?" ,这时候就用到转义字符了,转换掉特殊字符本身的特殊含义,就是让它打回原形,本身该是啥字符就啥字符,别来虚的,喀换成了 sa\?
稳
接下来说说简写字符吧,这里大家都容易理解,我的问题是,太容易忘记了,于是找到原名记它一波
简写 | 怎么记住 | 描述 |
---|---|---|
. | 匹配除换行符以外的任意字符 | |
\w | word(字符) | 匹配所有字母和数字的字符: [a-zA-Z0-9_]
|
\W | 匹配非字母和数字的字符: [^\w]
|
|
\d | digit(复数) | 匹配数字: [0-9]
|
\D | 匹配非数字: [^\d]
|
|
\s | space(空格) | 匹配空格符: [\t\n\f\r\p{Z}]
|
\S | 匹配非空格符: [^\s]
|