[原创]关于正则表达式

jason_zhangz jason_zhangz     2022-08-05     301

关键词:

最近笔试,遇到是很多关于正则表达式的问题。于是乎,就把自己学习的结合网上知识,整理整理。

此处以javascript为例:

JavaScript RegExp 对象

 


 

RegExp 对象

 

正则表达式是描述字符模式的对象。

 

正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

 

语法

 

var patt=new RegExp(pattern,modifiers);

或者更简单的方式:

var patt=/pattern/modifiers;

 

  • pattern(模式) 描述了表达式的模式
  • modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配

 

注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 )。比如,以下是等价的:

var re = new RegExp("\w+");
var re = /w+/

 


 

修饰符

 

修饰符用于执行区分大小写和全局匹配:

 

修饰符描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。

 

方括号

 

方括号用于查找某个范围内的字符:

 

表达式描述
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
(red|blue|green) 查找任何指定的选项。

 

元字符

 

元字符(Metacharacter)是拥有特殊含义的字符:

 

元字符描述
. 查找单个字符,除了换行和行结束符。
w 查找单词字符。
W 查找非单词字符。
d 查找数字。
D 查找非数字字符。
s 查找空白字符。
S 查找非空白字符。
 匹配单词边界。
B 匹配非单词边界。
查找 NUL 字符。
查找换行符。
f 查找换页符。
查找回车符。
查找制表符。
v 查找垂直制表符。
xxx 查找以八进制数 xxx 规定的字符。
xdd 查找以十六进制数 dd 规定的字符。
uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

 

量词

 

量词描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。
n{X} 匹配包含 X 个 n 的序列的字符串。
n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。
n{X,} 匹配包含至少 X 个 n 的序列的字符串。
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

 

RegExp 对象方法

 

方法描述FFIE
compile 编译正则表达式。 1 4
exec 检索字符串中指定的值。返回找到的值,并确定其位置。 1 4
test 检索字符串中指定的值。返回 true 或 false。 1 4

 

支持正则表达式的 String 对象的方法

 

方法描述FFIE
search 检索与正则表达式相匹配的值。 1 4
match 找到一个或多个正则表达式的匹配。 1 4
replace 替换与正则表达式匹配的子串。 1 4
split 把字符串分割为字符串数组。 1 4

 

 

 

 

 

常用的正则:

  1)/^d{15}(d{2}[A-Za-z0-9])?$/i  身份证

  2)/^(((d{2,3}))|(d{3}-))?((0d{2,3})|0d{2,3}-)?[1-9]d{6,7}(-d{1,4})?$/i  电话号码   如:020-88888888

  3)/^(13|15|18|17)d{9}$/i 手机号码

   4)/^d+(.d+)?$/i 验证整数或小数

  5)/^d+(.d+)?$/i          验证货币

  6)/^[1-9]d{4,9}$    验证QQ,从10000开始

  7)/^([+]?[0-9])|([-]?[0-9])+d*$/i                                        验证整数 可正负数

  8) /^(?:[1-9][0-9]?|1[01][0-9]|120)$/i        验证年龄

  9)/^[Α-¥]+$/i 验证中文

  10)/^[A-Za-z]+$/i    验证英语

  11)/^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i  验证用户名

  12)/^[1-9]d{5}$/i  验证邮政编码

  13 ) /d+.d+.d+.d+/i验证IP地址     

  14)/^[Α-¥]+$/i.test(value) | /^w+[ws]+w+$/i             验证姓名,可以是中文或英文

 

 

 

 

 

爬虫原创08使用简单正则表达式爬取下厨房(早餐,午餐,晚餐)

    目的1)     提取下厨房关键词为(早餐,午餐,晚餐)的菜谱2)     获取“菜谱链接,图片地址,菜名,材料,七天内多少人做过,作者“,存储到MONGODB3)    &n... 查看详情

关于正则表达式

关于正则表达式,其实我已经迷茫了很长一段时间了。正则表达式:  正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符。1.1元... 查看详情

关于正则表达式12之类的问题

我们创建一个正则表达式varRegExp=/^(123)(456)\2\1$/;这个正则表达式匹配到的字符串就是123456456123创建另外第二正则表达式varRegExp1=/^(123)(456)\1$/;这个正则表达式匹配到的字符串是123456123创建另外第三正则表达式varRegExp1=/^(123)(456)\2$/;... 查看详情

js关于正则表达式

正则表达式描述了字符的模式对象语法:varpatt=newRegExp(pattern,modifiers);或更简单的方法varpatt=/pattern/modifiers;模式描述了一个表达式模型。修饰符(modifiers)描述了检索是否是全局,区分大小写等。  注意:当使用构造函数创造正则... 查看详情

sql关于sql的正则表达式(代码片段)

查看详情

关于正则表达式

...若是有出错的地方,还请大家多包涵,多指教。对于正则表达式,只要我们能把这个表达式看懂,能够很好的 查看详情

[正则表达式]基础工具书篇关于边界

...集中第一个方括号的后边,表示“非”。^写在整个正则表达式的最前边,则表示匹配输入字符串的起始位置,即开头。简单的说,就是以什么什么为开头。比如,我们想要通过正则表达式匹验证手机号码。如果我们使用正则表... 查看详情

关于正则表达式的两年(代码片段)

...事情是冥冥之中,命中注定,比如这篇文章------关于正则表达式的两年可以这样说,这篇文章的一个完整生命周期,整整持续了大概两年。 开始回忆 ——第一份工作的第一份领导的某次例行沟通谈话中,在对我学习和工... 查看详情

关于grep的使用以及正则表达式

 一、正则表达式    简单地说,正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理行为,通过一些特殊的符号的辅助,可以让用户轻易打到查找、删除、替换某特定字符串的处理程序。这些... 查看详情

关于正则表达式

一.看语法http://www.runoob.com/regexp/regexp-syntax.html二.使用工具测试http://www.sojson.com/regex/http://tool.oschina.net/regex#工具结合语法可以快速的测试.举个栗子:选择大于等于0.01的数(最多只能有2位小数,可以是整数或1位小数)^[1-9]d*.?d{0,2}$|^[0]d... 查看详情

正则表达式——关于特殊字符验证

需求:验证密码,大于8位,包含字母,数字和特殊字符。必须三者同时存在。解答:^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[`~!@#$\%^&*()\_+-={}|[]:;‘<>?,.]).{8,}$ 重点:写起来其实不难,正常写的,在特殊字符处,多个字符在一起会因为... 查看详情

es6里关于正则表达式的拓展

...第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)varregex=newRegExp(‘xyz‘,‘i‘);//等价于varregex=/xyz/i;  第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝varregex=newRegExp... 查看详情

关于正则表达式

/i:忽略大小写/g  (全文查找出现的所有匹配字符)/m多行查找/gi全文查找忽略大小写/ig全文查找忽略大小写:将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,‘n‘匹配字... 查看详情

关于正则表达式取值

#取出字符串中汉字importreres=re.match(r‘[u4E00-u9FA5s]+‘,‘我是派森‘)print(res)结果:<re.Matchobject;span=(0,5),match=‘我是派森‘>print(res.group())结果:我是派森#取出字符串中的数字f_v=re.sub("D","","dii1310rqrqr")print(f_v)结果: 查看详情

关于正则表达式的入门心得

说起正则表达式,相信很多高手和大牛都不陌生,可对于我这个一年不写一段正则的人来说却是还是不知如何下手的,最近刚好接触了一些,总结写基础要点,第一用来加深记忆,第二分享给和我一样的初学者作为学习参考:是... 查看详情

关于我们的正则

正则表达式又称规则表达式,有时大家也会把它称为“火星文”,因为当自己写之后,再去看的时候,常常就会看不懂,虽然是这样,但是因为它具有强大的功能,所以成为我们必不可少的知识,以下介绍几个常见的表达式:整... 查看详情

关于正则表达式的一些实际应用

h1,h2,h3,h4,h5,h6,p,blockquote{margin:0;padding:0}body{font-family:"HelveticaNeue",Helvetica,"HiraginoSansGB",Arial,sans-serif;font-size:13px;line-height:18px;color:#737373;background-color:white;marg 查看详情

关于js中的常用表单验证+正则表达式

一、非空验证  trim:去空格(去掉前后的空格),任何字符串都可以用这个方法。写法为:if(v.trim().length==0),表示如果去掉空格后的字符串的长度为0。<body><formaction="Untitled-1.html"method="post"><inputtype="text"name="uid... 查看详情