JS基础:正则表达式

1、学习正则

        ^ 和 $ 夹在中间表示必须完全匹配

        (^\s*)表示从第一个位置开始匹配至少一个空格或控制符

        (\s*$)表示从最后一个位置开始匹配至少一个空格或控制符

        (^\s*)|(\s*$)前后匹配至少一个空格或控制符

        

2、兜兜使用过的正则【本人测试通过】

(1) ipv4 正则:172.16.0.0

var ipStr4 = /^(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))$/;

(2)私网地址:172.16.0.0/12

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

(3)ipv6 正则:2409:8a55:4222:f1:307c:f263:fc95:64a8

var ipStr6 = /^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?$/;

(4)请输入:5~22个字符,可包含英文、数字和‘-’,且‘-’不能在开头和结尾

 var a = /^[A-Za-z0-9][A-Za-z0-9\-]{3,20}[A-Za-z0-9]$/

(5)请输入:0~65535 的端口 

var a = /^(^[1-9]\d{0,3}$)|(^[1-5]\d{4}$)|(^6[0-4]\d{3}$)|(^65[0-4]\d{2}$)|(^655[0-2]\d$)|(^6553[0-5]$)/
请输入大于0且最大值为 999999.99的数字(有问题)
     /^0\.([1-9]|\d[1-9])$|^[1-9]\d{0,5}\.\d{0,2}$|^[1-9]\d{0,5}$/
     
请输入1到9999的整数
    /^[1-9]{1}\d{0,3}$/

输入值大于等于1
    /^[1-9]\d*$/

最多可输入15个字的汉字、字母、数字,不支持符号和空字符
    /^[\u4E00-\u9FA5\uF900-\uFA2D\w]{1,15}$/
    
英文逗号 转成 中文逗号
    replace(/,/ig,',’)
    
输入 0 到 60 的整数
    /^60$|^([1-5]\d)$|^\d?$/
    
请输入1到10的整数
    /^([1-9]|10)$/

首尾不能为空或超过50个字符,不能含有特殊字符/\\?"\'
    /^(?!\s)(?!.*[\\\/\?"']).{0,49}[^\s]$/

首尾不能为空,中间可以输入空格,且长度不过超过 50:
    /^(?!\s).{0,49}[^\s]$/

首尾不能为空,中间可以输入空格:      
    /(^\S+.*|.*\S+$)/

不可以输入空格,且长度不能超过 50:
    /^([^ ]){1,50}$/

首尾可以输,中间不可以输
    /^\s*\S+s*$/
    
首尾可以输,中间不可以输,且长度不超过 50:(有问题)
    /^(\s*\S+s*)[0, 9]$/ 

首尾,中间都可以输空格
    /(^\s+.*|.*\s+$)/

小于99.99的任意数字 小数点保留2位:
    /^(\-|\+)?\d{1,2}(\.\d{1,2})?$/

最大数为 999999.99的值
    /^\d{1,6}(\.\d{1,2})?$/

请输入 1-999999
    /^[1-9]{1}\d{0,5}$/

请输入大于0且最大数是365
    /^(3[0-6][0-5]|2[0-9][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])$/

请输入 0.01 到 999999.99
    /^0\.([1-9]|\d[1-9])$|^[1-9]\d{0,5}\.\d{0,2}$|^[1-9]\d{0,5}$/
    
支持小数点到两位小数和纯数字 0.01-99999999(大于0)
    /^0\.([1-9]|\d[1-9])$|^[1-9]\d{0,8}\.\d{0,2}$|^[1-9]\d{0,8}$/
    
长度5-18验证:
    /^[\dA-Za-z]{5,18}$/
    
长度为3-20的所有字符
    /^.{3,20}$/

仅限汉字、字母、数字,不能存在特殊字符、符号,最大支持10个长度
    /^[a-zA-Z0-9\u4E00-\u9FA5]{1,50}$/
    /^[\u4E00-\u9FA5\uf900-\ufa2d\w]{1,50}$/
    
大于1的整数
    /^([1-9]\d+|[2-9])$/
    
输入大于 0 的正整数
    /^[1-9]\d*$/
    
数字
    /^[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})?$/
    
有1~3位小数的正实数
    /^[0-9]+(.[0-9]{1,3})?$/
    
非零的正整数
    /^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$/
    
非零的负整数
    /^\-[1-9][]0-9"*$/
    或 
    /^-[1-9]\d*$/
    
非负整数
    /^\d+$ 或 ^[1-9]\d*|0$/

非正整数
    /^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$/ 
    
0.0~3.0 
    /^(([0-2]{1}(.[0-9]){0,1})|([3]{1}(.[0]){0,1}))?$/
    
0.00~100.00 
    /^((\d|[1-9]\d|100)(\.\d{1,2})?)$ 或 ^(([0-9]{1,2}|100)(\.\d{1,2})?)$/
    
禁止输入含有~的字符
    /^[^~\x22]+$/
    

3、常用正则

(?!_)  不能以_开头
(?!.*?_$)  不能以_结尾
[a-zA-Z0-9_\u4e00-\u9fa5]+  至少一个汉字、数字、字母、下划线
$  与字符串结束的地方匹配
    
匹配中文
    /^[\u4e00-\u9fa5]$/
    
英文字母
    /^[a-zA-Z]$/
    
数字    
    /^[0-9]$/
    
匹配中文,英文字母和数字及下划线
    /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/
匹配中文,英文字母和数字及下划线,同时判断输入长度
    /^[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}$/
    
只含有汉字、数字、字母、下划线,下划线位置不限
    /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/

由数字、26个英文字母或者下划线组成的字符串
    /^\w+$/

2~4个汉字
    /^[\u4E00-\u9FA5]{2,4}$/

最长不得超过7个汉字,或14个字节(数字,字母和下划线)正则表达式
    /^[\u4e00-\u9fa5]{1,7}$|^[\dA-Za-z_]{1,14}$/

匹配双字节字符(包括汉字在内)
    /^[^x00-xff]$/
    评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式
    /^ns*r$/
    评注:可以用来删除空白行

匹配首尾空白字符的正则表达式:
    /^s*|s*$/
    评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:
    /^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/  
    评注:表单验证时很实用

手机号:
    /^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\d{8}$/

身份证:
    /^\d{15}$)|(^\d{17}([0-9]|X|x)$/

匹配网址URL的正则表达式:
    [a-zA-z]+://[^s]*
    评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
    /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/
    评注:表单验证时很实用

匹配国内电话号码:
    /^d{3}-d{8}|d{4}-d{7}$/
    评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:
    /^[1-9][0-9]{4,}$/
    评注:腾讯QQ号从10000开始

匹配中国邮政编码:
    /^[1-9]d{5}(?!d)$/
    评注:中国邮政编码为6位数字

匹配身份证:
    /^d{15}|d{18}$/
    评注:中国的身份证为15位或18位

匹配ip地址:
    /^d+.d+.d+.d+$/
    评注:提取ip地址时有用

4、匹配特定数字

^[1-9]d*$    //匹配正整数

^-[1-9]d*$   //匹配负整数

^-?[1-9]d*$   //匹配整数

^[1-9]d*|0$  //匹配非负整数(正整数 + 0)

^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)

^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数

^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数

^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数

^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)

^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)

5、匹配特定字符串

^[A-Za-z]+$  //匹配由26个英文字母组成的字符串

^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串

^[a-z]+$  //匹配由26个英文字母的小写组成的字符串

^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

6、只能输入

​
只能输入数字:“^[0-9]*$”

只能输入n位的数字:“^d{n}$”

只能输入至少n位数字:“^d{n,}$”

只能输入m-n位的数字:“^d{m,n}$”

只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”

只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”

只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”

只能输入非零的正整数:“^+?[1-9][0-9]*$”

只能输入非零的负整数:“^-[1-9][0-9]*$”

只能输入长度为3的字符:“^.{3}$”

只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”

只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”

只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”

只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”

只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”

验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,

只能包含字符、数字和下划线。

验证是否含有^%&',;=?$"等字符:“[^%&',;=?$x22]+”

只能输入汉字:“^[u4e00-u9fa5],{0,}$”

验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”

验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”

验证身份证号(15位或18位数字):“^d{15}|d{}18$”

验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”

验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”

正确格式为:“01”“09”和“1”“31”。

匹配中文字符的正则表达式: [u4e00-u9fa5]

匹配双字节字符(包括汉字在内):[^x00-xff]

匹配空行的正则表达式:n[s| ]*r

匹配HTML标记的正则表达式:/.*|/

匹配首尾空格的正则表达式:(^s*)|(s*$)

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

​

7、问题一:)最近用的框架是 react ,form 表单验证的时候,遇到一个问题:动态校验字数。

        通常情况下,我们是写:/^[\u4e00-\u9fa5]{1,20}$/

        如果是动态的话应该:RegExp('^[\u4e00-\u9fa5]{1,' + a + '}$', 'I’)

        一开始我用了模版字符串,发现不对,因为  模板的${}和你正则的$ 是冲突的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值