为了账号安全,请及时绑定邮箱和手机立即绑定

js基础04--RegExp 对象

标签:
JavaScript

RegExp 对象用于规定在文本中检索的内容。

简单的模式可以是一个单独的字符。

更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。

您可以规定字符串中的检索位置,以及要检索的字符类型,等等。

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

正则表达式不加引号


创建 RegExp 对象的语法:

new RegExp(pattern, attributes);

参数

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

规则:

方括号

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

表达式描述
[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匹配单词边界。
\B匹配非单词边界。
\0查找 NUL 字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\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编译正则表达式。14
exec检索字符串中指定的值。返回找到的值,并确定其位置。14
test检索字符串中指定的值。返回 true 或 false。

test(字符串) 方法用于检测一个字符串是否匹配某个模式.

正则表达式名.test("需要检测的字符串")

常用正则表达式:

1 用户名正则

[js] view plain copy

  1. //用户名正则,4到16位(字母,数字,下划线,减号)  

  2. var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;  

  3. //输出 true  

  4. console.log(uPattern.test("iFat3"));  

2 密码强度正则

[js] view plain copy

  1. //密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符  

  2. var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;  

  3. //输出 true  

  4. console.log("=="+pPattern.test("iFat3#"));  

3 整数正则

[js] view plain copy

  1. //正整数正则  

  2. var posPattern = /^\d+$/;  

  3. //负整数正则  

  4. var negPattern = /^-\d+$/;  

  5. //整数正则  

  6. var intPattern = /^-?\d+$/;  

  7. //输出 true  

  8. console.log(posPattern.test("42"));  

  9. //输出 true  

  10. console.log(negPattern.test("-42"));  

  11. //输出 true  

  12. console.log(intPattern.test("-42"));  

4 数字正则

可以是整数也可以是浮点数

[js] view plain copy

  1. //正数正则  

  2. var posPattern = /^\d*\.?\d+$/;  

  3. //负数正则  

  4. var negPattern = /^-\d*\.?\d+$/;  

  5. //数字正则  

  6. var numPattern = /^-?\d*\.?\d+$/;  

  7. console.log(posPattern.test("42.2"));  

  8. console.log(negPattern.test("-42.2"));  

  9. console.log(numPattern.test("-42.2"));  

5 Email正则

[js] view plain copy

  1. //Email正则  

  2. var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;  

  3. //输出 true  

  4. console.log(ePattern.test(<a href="mailto:65974040@qq.com" rel="nofollow" target="_blank">65974040@qq.com</a>));  

6 手机号码正则

[js] view plain copy

  1. //手机号正则  

  2. var mPattern = /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$/;  

  3. //输出 true  

  4. console.log(mPattern.test("18600000000"));  

7 身份证号正则

[js] view plain copy

  1. //身份证号(18位)正则  

  2. var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;  

  3. //输出 true  

  4. console.log(cP.test("11010519880605371X"));  

8 URL正则

[js] view plain copy

  1. //身份证号(18位)正则  

  2. var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;  

  3. //输出 true  

  4. console.log(cP.test("11010519880605371X"));  

9 IPv4地址正则

[js] view plain copy

  1. //ipv4地址正则  

  2. var ipP = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;  

  3. //输出 true  

  4. console.log(ipP.test("115.28.47.26"));  

10 十六进制颜色正则

[js] view plain copy

  1. //RGB Hex颜色正则  

  2. var cPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;  

  3. //输出 true  

  4. console.log(cPattern.test("#b8b8b8"));  

11 日期正则

[js] view plain copy

  1. //日期正则,简单判定,未做月份及日期的判定  

  2. var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;  

  3. //输出 true  

  4. console.log(dP1.test("2017-05-11"));  

  5. //输出 true  

  6. console.log(dP1.test("2017-15-11"));  

  7. //日期正则,复杂判定  

  8. var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;  

  9. //输出 true  

  10. console.log(dP2.test("2017-02-11"));  

  11. //输出 false  

  12. console.log(dP2.test("2017-15-11"));  

  13. //输出 false  

  14. console.log(dP2.test("2017-02-29"));  

12 QQ号码正则

[js] view plain copy

  1. //QQ号正则,5至11位  

  2. var qqPattern = /^[1-9][0-9]{4,10}$/;  

  3. //输出 true  

  4. console.log(qqPattern.test("65974040"));  

13 微信号正则

[js] view plain copy

  1. //微信号正则,6至20位,以字母开头,字母,数字,减号,下划线  

  2. var wxPattern = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;  

  3. //输出 true  

  4. console.log(wxPattern.test("RuilongMao"));  

14 车牌号正则

[js] view plain copy

  1. //车牌号正则  

  2. var cPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;  

  3. //输出 true  

  4. console.log(cPattern.test("京K39006"));  

15 包含中文正则

[js] view plain copy

  1. //包含中文正则  

  2. var cnPattern = /[\u4E00-\u9FA5]/;  

  3. //输出 true  

  4. console.log(cnPattern.test("42度"));  

匹配完整域名的正则表达式:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
强:字母+数字+特殊字符&nbsp;&nbsp;^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&*]+$)(?![\d!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中:字母+数字,字母+特殊字符,数字+特殊字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$弱:纯数字,纯字母,纯特殊字符^(?:\d+|[a-zA-Z]+|[!@#$%^&*]+)$
<body>
<form action="" method="post" onsubmit="sub()">
    <label for="num">数字:</label><input type="number" id="num" name="number">
    <br>
    <input type="submit">
</form>
</body>
<script>    var form = document.getElementsByTagName("form")[0];    function sub() {        var num = document.getElementsByTagName("input")[0];        //正则表达式不是字符串        var patt = /^\d{5,10}$/;//num.value 获取表单中的值        if(!patt.test(num.value)){            alert("请输入5-10位数字!")
        }
    }
</script>




如有不足请多多指教!希望给您带来帮助!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消