正则表达式的语法_常用正则表达式及工具

更新日期: 2022-12-29阅读: 922标签: 正则

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。


正则表达式的语法

1.[]:表示一个字符,该字符可以是[]中指定的内容

例如:

[abc]:这个字符可以是a或b或c
[a-z] :表示任意一个小写字母
[a-zA-Z] :表示任意一个字母
[a-zA-Z0-9_] :表示任意一个数字字母下划线
[^abc] :该字符只要不是a或b或c


2.预定义字符:

. :表示任意一个字符,没有范围限制

\d :表示任意一个数字,等同于[0-9]
\w :表示任意一个单词字符,等同于[a-zA-Z0-9_]–单词指字母/数字/_
\s :表示任意一个空白字符
\D :表示不是数字
\W :不是单词字符
\S :不是空白字符


3.量词:

?:表示前面的内容出现0-1次

例如: [abc]? 可以匹配:a 或 b 或 c 或什么也不写

+:表示前面的内容最少出现1次

例如: [abc]+ 可以匹配:b或aaaaaaaaaa…或abcabcbabcbabcba…但是不能匹配:什么都不写 或 abcfdfsbbaqbb34bbwer…

*:表示前面的内容出现任意次(0-多次)—匹配内容与+一致,只是可以一次都不写

例如: [abc]* 可以匹配:b或aaaaaaaaaa…或abcabcba…或什么都不写,但是不能匹配:abcfdfsbbaqbb34bbwer…

{n}:表示前面的内容出现n次

例如: [abc]{3} 可以匹配:aaa 或 bbb 或 aab 或abc 或bbc,但是不能匹配: aaaa 或 aad

{n,m}:表示前面的内容出现最少n次最多m次

例如: [abc]{3,5} 可以匹配:aaa 或 abcab 或者 abcc,但是不能匹配:aaaaaa 或 aabbd

{n,}:表示前面的内容出现n次以上(含n次)

例如: [abc]{3,} 可以匹配:aaa 或 aaaaa… 或 abcbabbcbabcba…,但是不能匹配:aa 或 abbdaw…


4.()用于分组

是将括号内的内容看做是一个整体

例如:(abc){3} 表示abc整体出现3次. 可以匹配abcabcabc,但是不能匹配aaa 或abcabc

(abc|def){3} 表示abc或def整体出现3次,可以匹配: abcabcabc 或 defdefdef 或 abcdefabc,但是不能匹配abcdef 或abcdfbdef


常用正则表达式:

一、数字

数字^[0-9]*$
n位的数字^\d{n}$
至少n位的数字^\d{n,}$
m-n位的数字^\d{m,n}$
零和非零开头的数字^(0|[1-9][0-9]*)$
非零开头的最多带两位小数的数字^([1-9][0-9]*)+(\.[0-9]{1,2})?$
带1-2位小数的正数或负数^(\-)?\d+(\.\d{1,2})$
正数、负数、和小数^(\-|\+)?\d+(\.\d+)?$
有两位小数的正实数^[0-9]+(\.[0-9]{2})?$
非负整数^\d+$ 或 ^[1-9]\d*|0$
非正整数^-[1-9]\d*|0$
浮点数^(-?\d+)(\.\d+)?$
正浮点数^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
负浮点数^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$

二、字符

汉字^[\u4e00-\u9fa5]{0,}$
大写英文^[A-Z]+$
小写英文^[a-z]+$
英文和数字^[A-Za-z0-9]+$
英文、数字和下划线^\w+$
中文、英文、数字^[\u4E00-\u9FA5A-Za-z0-9]+$
中文、英文、数字和下划线^[\u4E00-\u9FA5A-Za-z0-9_]+$
双字节字符(包括汉字在内)[^\x00-\xff]

三、特殊需求表达式

Email^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
身份证号码^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
手机号码^1(3|4|5|6|7|8|9)\d{9}$
固定电话(XXX-XXXXXXX XXXX-XXXXXXXX)(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
域名^((http:\/\/)|(https:\/\/))?([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}(\/)
IPv4((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
html标签<(\S*?)[^>]*>.*?|<.*? />
日期^\d{4}-\d{1,2}-\d{1,2}
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)^[a-zA-Z]\w{5,17}$
密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间)^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间)^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

正则表达式工具

正则表达式调试工具

正则表达式调试工具,前端开发工具箱,针对程序开发人员,通过该工具可以快速准备的判断所写的正则是否能正确匹配相应的字符

地址:https://www.fly63.com/tool/regex/


在线正则表达式测试工具

该工具允许你测试和分析正则表达式。在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。

地址:https://www.fly63.com/tool/regextest/


链接: https://fly63.com/article/detial/12279

javascript较全常用的表达正则验证,js中采用test()方法

正则表达式是一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。本文整理了JS较全且实用正则表达式。

js使用正则过滤emoji表情符号

手机端常常会遇到用户输入框,输入emoji,如果是数据库是UTF8,会遇到报错,原因是:UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。

一次记住js的6个正则方法

来记忆一些常用特殊字符,这个是正则本身的范畴了,是不是总觉得记不住?其实我也记不住,每次都是去搜索和online验证来完成一些任务。我也困恼过,其实最后还是因为自己写的少吧,唯手熟尔。。。

密码强度的正则表达式(JavaScript)总结

本文给出了两个密码强度的正则表达式方案,一个简单,一个更复杂和安全。并分别给出了两个方案的解析和测试程序。一般大家可以根据自己的项目的实际需要,自行定义自己的密码正则约定。

JavaScript判断字符串包含中文字符的方法总结

JS中判断一个字符串是否包含汉字,下面就介绍2中常用的实现方法:用正则表达式判断、用 Unicode 字符范围判断。

js常用正则表达式验证大全(整理详细且实用)

正则表达式对象用来规范一个规范的表达式,本文讲的是JS正则表达式大全(整理详细且实用),包括校验数字、字符、一些特殊的需求等等

javascript 正则表达式之分组与前瞻匹配详解

本文主要讲解javascript 的正则表达式中的分组匹配与前瞻匹配的,需要对正则的有基本认识。分组匹配:捕获性分组匹配、非捕获性分组匹配。前瞻匹配:正向前瞻匹配: (?=表达式) 后面一定要匹配有什么、反向前瞻匹配: (?!表达式) 后面一定不能要有什么

利用正则表达式去除所有html标签,只保留文字

后台将富文本编辑器中的内容返回到前端时如果带上了标签,这时就可以利用这种方法只保留文字。利用正则表达式去除所有html标签,只保留文字

正则表达式后行断言 • 探索 ES2018 和 ES2019

先后行断言(Lookaround Assertion)是正则表达式中的一个构造,明确了当前位置的前后字符序列,但没有其他副作用。当前 JavaScript 唯一支持的 Lookaround Assertion 是 先行断言,其匹配当前位置接下来的字符序列

循环下的正则匹配?说说正则中的lastIndex

正则有一个属性叫lastIndex,它表示正则下一次匹配时的起始位置。一般情况下我们是使用不到它的,但在正则中包含全局标志g时,正则的test和exec方法就会使用到它

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!