在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。很可能你使用过 Windows/Dos 下用于文件查找的通配符(wildcard),也就是*和?。如果你想查找某个目录下的所有的 Word 文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。
正则表达式是一个对象,这个对象描述一种字符模式。 JavaScript RegExp 类代表正则表达式,字符串和 RegExp 都定义了方法,在方法中使用正则表达式来执行文本中强大的模式匹配和搜索替换功能。语法正则表达式可以被 RegExp() 构造函数定义,如下所示: var pattern = new RegExp(pattern, attributes); or simply var patter = /pattern/attributes;
数据处理工具:awk ,sed正则表达式基本上是一种“表示法”,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正则表达式的字符串处理只用。例如 vi,grep,awk,sed 等工具 正则表达式特殊符号语系对应正在表达式也会存在影响。比如LANG=C 时:0 1 2 3 4 … A B C D ..Z a b c d ..zLANG=ZH_CN 时:0 1 2 3 4 …a A b B c C d D …….
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以 a 开始,以 b 结束的字符串。如果用它来搜索 aabab 的话,它会匹配整个字符串 aabab。这被称为贪婪匹配。有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。
前面我们提到过怎么查找不是某个字符或不在某个字符类里的字符的方法(反义)。但是如果我们只是想要确保某个字符没有出现,但并不想去匹配它时怎么办?例如,如果我们想查找这样的单词--它里面出现了字母q,但是q后面跟的不是字母u,我们可以尝试这样:\b\w*q[^u]\w*\b匹配包含后面不是字母 u 的字母 q 的单词。