说正则表达式之前,先来几个常用的正则参考,方便大家使用的时候,直接拿去用,然后在开始讲理论知识(啧啧啧)
1: 输入的数字值在 1-100之间,且包含1和100
number = /^(?:|[1-9][0-9]?|100)$/;
number = /^(\d{1,2}|100)$/;
2: 输入的数字值在 0-1之间(如:0.45),且包含0和1
number = /^1$|^0(\.\d{1,})?$/;
3: 验证身份证号
reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
4: 验证邮箱
email = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
5: 验证手机号码
1:reg = /^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/;
2:!(/^1[34578]\d{9}$/.test(需要验证的手机号))
6: 验证银行卡号19位
cardNumber = /^(\d{19})$/;
7: 验证1-6位小数
decimal = /^[0-9]+(.[0-9]{1,6})?$/;
8: 验证英文
english = /^[A-Za-z]+$/;
9: 验证数字,最多有两个小数
number = /^[0-9]+(.[0-9]{1,2})?$/;
10: 验证1-3小数
number = /^\d{1,3}$/;
11: 更改时间日期的显示
var start_time = "2018-06-28T09:13:11";
正则方式:start_time.replace(/-/g, '.').substr(0, 10) + ' ' + start_time.replace(/:/g, '.').substr(11, 18)
执行结果:"2018.06.28 09.13.11"
微软上关于正则表达式的一个说明文档,讲解的挺详细的,可以参考下~
正则表达式示例
正则表达式 | 说明 |
---|---|
/^\s*$/ | 匹配空行。 |
/\d{2}-\d{5}/ | 匹配由两位数字、一个连字符再加五位数字组成的 ID 号。 |
/<\s*(\S+)(\s[^>])?>[\s\S]<\s*\/\1\s*>/ | 匹配 HTML 标记。 |
常用的元字符
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\d | 匹配 数字 |
\b | 匹配 单词的开始或结束 |
^ | 匹配 字符串的开始 |
$ | 匹配 字符串的结束 |
【注】:
第一个例子:
元字符^(和数字6在同一个键位的符号)和$都匹配一个位置,这和\b有点类似。^ 匹配你要用来查找的字符串的开头,$匹配结尾。例如,验证1-3小数,可以这样写
number = /^\d{1,3}$/;
第二个例子:
\ba\w*\b匹配以字母a开头的单词——先是某个单词开始处(\b),然后是字母a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b)。
\d+匹配1个或更多连续的数字。这里的+是和*类似的元字符,不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。
\b\w{6}\b 匹配刚好6个字符的单词。
第三个例子:
像[0-9]代表的含意与\d就是完全一致的:一位数字;同理[a-z0-9A-Z_]也完全等同于\w(如果只考虑英文的话)
对应上面表格中的常用元字符,你可以很直观的看出这行正则是什么意思,就瞬间明白了。
【重复】常用的限定符
代码/语法 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
【反义】常见的反义代码
代码/语法 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^X] | 匹配除了x以外的任意字符 |
^[aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
【例子】:
<a[^>]+>匹配用尖括号括起来的以a开头的字符串
以上就是关于正则的一些基本的知识,日常小型开发需要用到的一些正则校验。相信在你看了这篇文章之后,应该可以足够应付了。但是还有很多没有提到的东西。包含一些语法和简单的说明。你可以在网上找到更详细的参考资料来学习它们,前提是当你需要用到它们的时候。
这里提供一个MDN的网站,关于正则基础的讲解。希望你能有所收获~