正则表达式

曾经认为,这玩意儿要匹配的话扔网上工具转换就行,但现在感觉还是记住一些比较重要的好一点,所以就当练打字吧~

这里的正则表达式就暂时在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 协议 ,转载请注明出处!