正则表达式

来源:互联网 发布:苹果数据接口转usb 编辑:程序博客网 时间:2024/06/03 15:45

关于正则,常用的一些元字符可以见:百度百科–正则表达式

我在这里仅列举一些容易忘记的概念。

  • | 将两个匹配条件进行逻辑“或”(Or)运算。
  • ^ 匹配输入字符串的开始位置。
  • [a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
  • [^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
  • \ 将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配\n。“\n”匹配换行符。序列“\”匹配“\”而“(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。

下面举个例子:

new RegExp("(^| )"+name+"=([^;]*)(;|$)")

上面这个正则中:
(^| ) 匹配开头和空格
[^;] 匹配除了;之外的其它字符
(;|$) 匹配; 和结尾

这个正则是用于cookie中。cookie的保存方式:name=value,有多个cookie时用分号空格隔开:
cookieaa=aaaa; cookiebb=bbbb
如果name值为cookieaa,完整的正则为(^| )cookieaa=([^;]*)(;|$)
匹配结果:cookieaa=aaaa;

上面^出现了两次,分别是不同的意思。
1、匹配开头
2、表示否定
那么到底有什么规律呢?

第一种情况:限定开头

/[(^\s+)(\s+$)]/g(^cat)$(^cat$)^(cat)$^(cat$)

第二种情况:表示字符类的否定。

[^a]表示“匹配除了a的任意字符”。[^a-zA-Z0-9]表示“找到一个非字母也非数字的字符”。[\^abc]表示“找到一个插入符或者a或者b或者c”。[^\^]表示“找到除了插入符外的任意字符”。(呕!)

总结如下:
只要是”^”这个字符是在中括号”[]”中被使用的话就是表示字符类的否定,如果不是的话就是表示限定开头。
我这里说的是直接在”[]”中使用,不包括嵌套使用。
也就是说”[]”代表的是一个字符集,”^”只有在字符集中才是反向字符集的意思。

原创粉丝点击