正则表达式
曾经认为,这玩意儿要匹配的话扔网上工具转换就行,但现在感觉还是记住一些比较重要的好一点,所以就当练打字吧~
这里的正则表达式就暂时在javascript上讨论吧。
再附上一个贼鸡儿好用的在线匹配
在某些语言里面记得用` ` 字符进行传递
这就不得不提到RegExpMDN手册这个对象
语法:
var patt = new RegExp(pattern[, flags])
var patt = /pattern/flags;
pattern:就是写正则的地方 flags取值(可以是下面的任意组合):
g:global match //查找所有匹配而不是在找到第一个匹配后停止
i:ignore case //忽略大小写
m:multiline;treat begining and end characters(^ and $)as working over multiple lines
//多行匹配,用这个属性后$会匹配'\n'或'\r'.要匹配$本身,用\$
特殊字符
特殊字符 | 简单说明(无特殊说明,匹配本身都是用\转义) |
---|---|
$ | 匹配输入字符串的结尾位置。 |
() | 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。 |
* | (限定符)匹配前面的子表达式零次或多次。 |
+ | (限定符)匹配前面的子表达式一次或多次。 |
. | 匹配除换行符\n之外的任何单字符;匹配本身用\。 |
? | 匹配前面的子表达式零次或一次,或知名一个非贪婪限定符。 |
[ | 标记一个中括号表达式的开始。 |
^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。 |
{ | 标记限定符表达式的开始。 |
¦ | 很明显,"或"符号。 |
限定符
字符 | 简单说明 |
---|---|
() | 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。 |
* | (限定符)匹配前面的子表达式零次或多次。 |
+ | (限定符)匹配前面的子表达式一次或多次。 |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。 |
这里顺带说一声,如果在markdown中直接用table标签的话要所有html代码压缩才可以,要不会多出很多<br/>
其他元字符
字符 | 简单说明 |
---|---|
[xyz] | 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。 |
[^xyz] | 负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’、‘l’、‘i’、‘n’。 |
\b | 匹配一个单词边界,也就是指单词和空格间的位置。‘er\b’ 可以匹配"never" 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。 |
\B | 匹配非单词边界。‘er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。 |
\d | 匹配一个数字字符。等价于 [0-9]。 \D同上。 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。\S同上。 |
\w | 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。\W同上。 |
x{n} | n 是一个非负整数。匹配x的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。 |
x{n,} | n 是一个非负整数。至少匹配x的n 次。例如,‘o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。‘o{1,}’ 等价于 ‘o+’。‘o{0,}’ 则等价于 ‘o*’。 |
使用正则的方法:
1. exec
搜索字符串制定的值,返回找到的值,如果没有匹配,返回Null
var myRe = /d(b+)d/g;//使用g全局匹配,符合d开始,d结尾
var myArray = myRe.exec("cdbbdbsbz");/*["dbbd", "bb"]*/
var myArray2 = myRe.exec("a");/*null*/
2. test()
搜索字符串指定的值,返回真假
var myRe = new RegExp("e");
console.log(myRe.test("The best"));/*true*/
console.log(myRe.test("a"));/*false*/
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!