正则表达式

作者&投稿:司皆 (若有异议请与网页底部的电邮联系)
~

regular expression是计算机科学中的一个概念。正则表达式使用单个字符串来描述匹配一系列符合某个句法规则的字符串。

g全文搜索,i忽略大小写,m多行搜索

具有特殊意义的专用字符,用来规定其前导字符
( [ { \ ^ $ | ) ? * + .
不同组合中的元字符有不同的意义,举例

可以使用[]来构建一个简单的类
var reg = /[abc123]/;
创建一个单字符的类,代表这个字符可以是a,可以是b,可以是c,可以是1,...可以是3。

可以使用^来进行取反,
var reg = /[^abc123]/;
代表着这个单字符可以是任何其他的单字符,除了a,b,c,1,2,3之外。

如果要匹配单个字符,让单字符只能取数字的话,可以使用字符类
写成:
var reg = /[0123456789]/;
这么写比较麻烦,所以可以使用范围类,我们可以使用x-y来连接两个字符,表示从x到y的任意字符,是个 闭区间 ,意味着 包含x和y本身 ,这样,我们要匹配单个数字就可以写成:
var reg2 = /[0-9]/;
要匹配所以的单个字母,可以写为
var reg3 = /[a-zA-Z]/;

上面创建了一些类,用来表示数组,字母等。但是这么写也比较麻烦,正则表达式提供了几个常见的预定义类来匹配常见的字符

有了这些预定义类,写一些正则就比较方便了,比如我们希望匹配一个ab+数字+任意字符的字符串,就可以写作:
var reg = /ab\d./;

正则表达式还提供了几个常用的边界匹配字符

^如果不写在[]内的话,不代表取反,代表以xxx开头,例如: var reg = /hello/; 代表以hello开头,相应的也有$表示为以xxx结尾,举例说明:

单词边界

之前写的方法都是一一匹配的,但是如果希望匹配一个连续出现很多次的字符,例如数字的字符串,不需要写成 \d\d\d\d ,我们可以使用量词

使用举例:

上面提到的{n,m},如果出现多次,只要是n-m中的值都满足条件,到底是按照n还是m来匹配。 量词在默认条件下是尽可能多的匹配的,即默认贪婪模式
var reg = /\d{3,5}/g; '123456789'.match(reg); //{"12345","6789"}

与贪婪模式相对的,就有非贪婪模式,即尽可能少的匹配,一旦成功匹配之后不再继续尝试,在后面加上?即可
var reg2 = /\d{3,5}?/g; '123456789'.match(reg); //{"12345","6789"}

上面的量词解决的是单个字符重复多次的问题,如果我们需要匹配重复的多个字符,比如匹配hello出现20次,如果写成hello{20}意味着是hell+o出现20次,o自己重复20次,而不是整个hello重复20次。

我们可以使用分组()来解决这个问题,写成:
/(hello){20}/g;

对于上面的情况,如果我们希望匹配hello或者world出现20次,可以通过使用 | 进行或操作
/(hello|world){20}/g;

举例: good(?=Bayon) 匹配后面有Bayon的good

检测字符串参数中是否存在正则表达式模式,存在返回true不存在返回false

用于正则表达式模式在字符串中运行查找,如果exec()找到了匹配的文本,则返回一个结果数组,否则返回null
除了数组元素和length属性之外,exec()方法返回对象还包括两个属性。

举例说明:

search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
search方法不执行全局匹配,它将忽略标志g,同时也忽略正则表达式对象的lastIndex属性,总是返回字符串的第一个匹配的位置

match()方法将检索字符串,以找到一个或者多个与regexp匹配的文本。regexp是否有全局g标志会影响结果。

关于string对象的replace方法,一般可以传入两个字符串,但是只能replace一次,如果把第一个参数传入regexp的话,就可以是replace变得灵活。

经常使用split方法把字符串分割为字符数组
'a,b,c,d'.split(","); // ["a","b","c","d"];
相应的,也可以使用regexp进行切割:
"a1b2c3".split(/\d/); // ["a","b","c","d"]



20个常用的正则表达式
答:正则表达式 匹配数字:^[0-9]+ 匹配非负整数(正整数和0):^\d+ 匹配正整数:^[1-9]\d 匹配非正整数(负整数和0):^((-\d+)|(0+))匹配负整数:^-[1-9]\d 匹配整数:^-?\d+ 匹配非负浮点数(正浮点数和0):^\d+(.\d+)?匹配正浮点数:^[1-9]\d*.\d*|0....

正则表达式-常用匹配公式
答:26 中文字符的正则表达式:[\u4e00-\u9fa5]27 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))28 空白行的正则表达式:\n\s*\r (可以用来删除空白行)29 HTML标记的正则表达式:<(\S ?)[^>] >. ?</\1>|<. ? /> (网上...

正则表达式//???
答:正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符操作的一种逻辑公式,就是用事先定义好的...

正则表达式大全
答:17.中文字符的正则表达式: [\u4e00-\u9fa5]18.双字节字符 :[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))19.空白行的正则表达式: \n\s*\r (可以用来删除空白行)20.HTML标记的正则表达式: <(\S*?)[^>]*>.*?|<.*? /> ...

正则表达式的种类有哪些
答:1. 基础正则表达式(BRE):这是最早的正则表达式形式,提供了一组有限的模式匹配元字符,如“.”(匹配任意字符)、“*”(匹配前面的元素零次或多次)等。然而,在BRE中,很多特殊字符需要使用反斜杠“\”进行转义,如“\(”、“\)”用于表示...

20个常用的正则表达式
答:正则表达式,又称规则表达式。(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。常用的65条正则表达式js常用正则表达式整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:^[0-9]*$。

Java中什么是正则表达式
答:正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或...

linux学习日记九 正则表达式介绍
答:正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。 正则表达式基本上就是一种“表示法”,只要工具程序支持这种表示法,那么该工具程序就可以利用正则表达式处理字符串。例如vi,grep,awk,sed等。 正则表达...

什么是正则表达式
答:正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

什么是正则表达式?有什么作用?
答:正则表达式如下:([1-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])[1-9]\d*表示所有大于等于1的整数(整数第一位不为0,后面的随意)\.\d*[1-9]为小数部分(小数点最后一位不为0,中间的随意)([1-9]\d*(\.\d*[1-9])?)就是所有大于0的数,并且可以有小数部分 (0\.\d*[1-...