加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身

发布时间:2020-12-13 21:57:30 所属栏目:百科 来源:网络整理
导读:什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配。 通常用于格式验证、正则替换、查找子串等 各种编程语言的正则表达式基本相同,不同的语言可能会有一些细小的差别 RegExp入门:http://www.w3school.com.cn/

什么是 RegExp?

  • RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配。
  • 通常用于格式验证、正则替换、查找子串等
  • 各种编程语言的正则表达式基本相同,不同的语言可能会有一些细小的差别
  • RegExp入门:http://www.w3school.com.cn/js/js_obj_regexp.asp
  • 完整的 RegExp 对象参考手册:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp

RegExp 语法

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
// 直接实例化 var reg = new RegExp(pattern [,flags]); // 隐式创建(推荐) var reg = /pattern/flags;
  • 参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

  • 参数 [,flags] 是一个可选的字符串,包含属性 “g”(global )、”i” (ignoreCase)和 “m”(multiline)。

  • ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

概念:子表达式

  • 在正则表达式中,使用括号括起来的内容是一个子表达式,子表达式匹配到的内容会被系统捕获至缓冲区,使用n(n:数字)来反向引用系统的第n号缓冲区的内容。

  • 场景:后面的内容要求与前面的一致,可以使用子表达式

// 查找连续相同的四个数字
var str = "1212ab45677778cd";
/(d)111/gi;
console.log(str.match(reg));
// OUTPUT:7777

概念:方括号(字符簇)

  • [abc] 查找方括号之间的任何字符。
  • [^abc] 查找任何不在方括号之间的字符。
  • [0-9] 查找任何从 0 至 9 的数字。同 d
  • [a-z] 查找任何从小写 a 到小写 z 的字符。
  • [A-Z] 查找任何从大写 A 到大写 Z 的字符。
  • [A-z] 查找任何从大写 A 到小写 z 的字符。
  • [0-9a-zA-Z]
  • (red|blue|green) 查找任何指定的选项。
  
  
  • 1
  • 2
  • 3
  • 4
    • 1
    • 2
    • 3
    • 4
    "Is this all there is?"; var patt1 = /[a-h]/g; document.write(str.match(patt1)); // OUTPUT:h,a,h,e,e

    概念:元字符

    元字符(Metacharacter)是拥有特殊含义的字符:
    - 转义符 (、)、/、
    - | 选择匹配符,可以匹配多个规则
    - . 查找单个字符,除了换行和行结束符。
    - w 查找单词字符。字符 ( 字母 ,数字,下划线_ )
    - W 查找非单词字符。
    - d 查找数字。
    - D 查找非数字字符。
    - s 查找空白字符。空格
    - S 查找非空白字符。
    - b 匹配单词边界。
    - B 匹配非单词边界。
    - 查找 NUL 字符。
    - n 查找换行符。
    - f 查找换页符。
    - r 查找回车符。
    - t 查找制表符。
    - v 查找垂直制表符。
    - xxx 查找以八进制数 xxx 规定的字符。
    - xdd 查找以十六进制数 dd 规定的字符。
    - uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

    概念:量词

    • n+ 匹配任何包含至少一个 n 的字符串。同 {1,}
    • n* 匹配任何包含零个或多个 n 的字符串。同 {0,}
    • n? 匹配任何包含零个或一个 n 的字符串。同 {0,1}
    • n{X} 匹配包含 X 个 n 的序列的字符串。
    • n{X,Y} 匹配包含 X 至 Y 个 n 的序列的字符串。
    • n{X,} 匹配包含至少 X 个 n 的序列的字符串。
    • n$ 匹配任何结尾为 n 的字符串。
    • ^n 匹配任何开头为 n 的字符串。注意 /[^a] / 和 /^ [a]/是不一样的,前者是排除的意思,后者是代表首位。
    • (?=n) 匹配任何其后紧接指定字符串 n 的字符串。正向预查
    • (?!n) 匹配任何其后没有紧接指定字符串 n 的字符串。反向预查

    RegExp 对象方法

    test()

    test() 方法检索字符串中是否存在指定的值。返回值是 true 或 false。

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    var patt1 = RegExp('e'); console.log(patt1.test('some text')); // OUTPUT:true var patt2 = 'ee'); console.log(patt2.test(// OUTPUT:false
      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    // 判断是不是QQ号 // 1 首位不能是0 ^[1-9] // 2 必须是 [5,11] 位的数字 d{4,9} '80583600'; var regexp = /^[1-9][0-9]{4,10}$/gim; if (regexp.test(str)) { alert('is'); } else { alert('no'); }

    exec()

    exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

    'e');
    console.log(patt1.exec(// OUTPUT:e
    
    'ee');
    console.log(patt2.exec(// OUTPUT:null

    compile()

    compile() 既可以改变检索模式,也可以添加或删除第二个参数。

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    var patt1="e"); document.write(patt1.test("The best things in life are free")); // true // 改变了检索模式 patt1.compile("eee"); document.write(patt1.test(// false

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

    search 检索与正则表达式相匹配的值。

      
      
  • 1
  • 2
  • 3
    • 1
    • 2
    • 3
    "Visit W3School!" console.log(str.search(/W3School/)) // OUTPUT:6

    match 找到一个或多个正则表达式的匹配。

    var str="1 plus 2 equal 3"
    console.log(str.match(/d+/g))
    // OUTPUT:1,2,3

    replace 替换与正则表达式匹配的子串。

    "Visit Microsoft!"
    console.log(str.replace(/Microsoft/,"W3School"));
    // OUTPUT:Visit W3School!
      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    // 找重复项最多的字符个数 'g21ss4aeba_ersb43sgnnsssstht6sss60snnsj8resw0_ss'; // split : 将字符串转化为数组 // sort : 对数组排序,ASCII // join : 将数组转化为字符串 var str_new = str.split('').sort().join(''); document.write(str + '<br>'); document.write(str.split('') + '').sort() + '<br>'); // 匹配字符,且重复这个字符,重复次数至少一次。 /(w)1+/g; var index = 0; var value = ''; str_new.replace(regexp,function($0,$1) { // document.write($0); // document.write($1); if (index < $0.length) { index = $0.length; value = $1; } }); document.write('重复项最多的字符是:' + value + ',个数是:' + index); // OUTPUT: // 0012344668__aabbeeegghjnnnnrrssssssssssssssssttw // 重复项最多的字符是:s,个数是:16

    split 把字符串分割为字符串数组。

    "How are you doing today?"
    document.write(str.split(/s+/));
    // OUTPUT:How,are,you,doing,today?

    经验:

    1. 检验格式(邮箱格式、IP格式)是否正确,用test()
    2. 抓取星期(如所有手机号),用exec()、match()
    3. 替换敏感词汇,用replace()

    常见的 正则表达式 校验

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    // 常见的 正则表达式 校验 // QQ号、手机号、Email、是否是数字、去掉前后空格、是否存在中文、邮编、身份证、URL、日期格式、IP var myRegExp = { // 检查字符串是否为合法QQ号码 isQQ: (str) { // 1 首位不能是0 ^[1-9] if (reg.test(str)) { console.log('QQ号码格式输入正确'); return true; } else { console.log('请输入正确格式的QQ号码'); false; } },// 检查字符串是否为合法手机号码 isPhone: (str) { /^(0|86|17951)?(13[0-9]|15[012356789]|18[0-9]|14[57]|17[678])[0-9]{8}$/; '手机号码格式输入正确'); '请输入正确格式的手机号码'); // 检查字符串是否为合法Email地址 isEmail: /^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/; // var reg = /w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/; 'Email格式输入正确'); '请输入正确格式的Email'); // 检查字符串是否是数字 isNumber: /^d+$/; if (reg.test(str)) { console.log(str + '是数字'); else { console.log(str + '不是数字'); // 去掉前后空格 trim: /^s+|s+$/g; return str.replace(reg,0); box-sizing: border-box;">''); },0); box-sizing: border-box;">// 检查字符串是否存在中文 isChinese: /[u4e00-u9fa5]/gm; ' 中存在中文'); ' 中不存在中文'); // 检查字符串是否为合法邮政编码 isPostcode: // 起始数字不能为0,然后是5个数字 [1-9]d{5} /^[1-9]d{5}$/g; // var reg = /^[1-9]d{5}(?!d)$/; ' 是合法的邮编格式'); ' 是不合法的邮编格式'); // 检查字符串是否为合法身份证号码 isIDcard: /^(^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$)|(^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])((d{4})|d{3}[Xx])$)$/; ' 是合法的身份证号码'); ' 是不合法的身份证号码'); // 检查字符串是否为合法URL isURL: /^https?://(([a-zA-Z0-9_-])+(.)?)*(:d+)?(/((.)?(?)?=?&?[a-zA-Z0-9_-](?)?)*)*$/i; ' 是合法的URL'); ' 是不合法的URL'); // 检查字符串是否为合法日期格式 yyyy-mm-dd isDate: /^[1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9]$/; ' 是合法的日期格式'); ' 是不合法的日期格式,yyyy-mm-dd'); // 检查字符串是否为合法IP地址 isIP: // 1.1.1.1 四段 [0,255] // 第一段不能为0 // 每个段不能以0开头 // // 本机IP: 58.50.120.18 湖北省荆州市 电信 /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/gi; ' 是合法的IP地址'); ' 是不合法的IP地址'); false; } } } // 测试 // console.log(myRegExp.isQQ('80583600')); // console.log(myRegExp.isPhone('17607160722')); // console.log(myRegExp.isEmail('80583600@qq.com')); // console.log(myRegExp.isNumber('100a')); // console.log(myRegExp.trim(' 100 ')); // console.log(myRegExp.isChinese('baixiaoming')); // console.log(myRegExp.isChinese('小明')); // console.log(myRegExp.isPostcode('412345')); // console.log(myRegExp.isIDcard('42091119940927001X')); // console.log(myRegExp.isURL('https://www.baidu.com/')); // console.log(myRegExp.isDate('2017-4-4')); // console.log(myRegExp.isIP('1.0.0.0'));

    一、校验数字的表达式

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    数字:^[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+))$ 非负浮点数:^d+(.d+)?$ 或 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ 非正浮点数:^((-d+(.d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ 正浮点数:^[1-9]d*.d*|0.d*[1-9]d*$ 或 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$ 负浮点数:^-([1-9]d*.d*|0.d*[1-9]d*)$ 或 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 浮点数:^(-?d+)(.d+)?$ 或 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$

    二、校验字符的表达式

      
      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 汉字:^[u4e00-u9fa5]{0,}$ 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z9]{4,40}$ 长度为3-20的所有字符:^.{3,102); box-sizing: border-box;">20}$ 26个英文字母组成的字符串:^[A-Za-z]+26个大写英文字母组成的字符串:^[A-Z]+26个小写英文字母组成的字符串:^[a-z]+$ 由数字和26个英文字母组成的字符串:^[A-Za-z$ 由数字、26个英文字母或者下划线组成的字符串:^w+$ 或 ^w{$ 中文、英文、数字包括下划线:^[u4E00-u9FA5A-Za-z9_]+$ 可以输入含有^%&',;=?$"等字符:[^%&',;=?$x22]+ 禁止输入含有~的字符:[^~x22]+

    三、特殊需求表达式

    Email地址:^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$
    域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
    InternetURL:[a-zA-z]+://[^s]* 或 ^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$
    手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$
    电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^((d{3,4}-)|d{3.4}-)?d{7,8}$ 
    国内电话号码(0511-4405222、021-87888822):d{3}-d{8}|d{4}-d{7}
    身份证号(15位、18位数字):^d{15}|d{18}$
    短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
    帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]w{5,17}$
    强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$  
    日期格式:^d{4}-d{1,2}-d{1,2}
    一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
    一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$ 
    xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+.[x|X][m|M][l|L]$
    中文字符的正则表达式:[u4e00-u9fa5]
    双字节字符:[^x00-xff]    (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
    空白行的正则表达式:ns*r    (可以用来删除空白行)
    HTML标记的正则表达式:<(S*?)[^>]*>.*?</1>|.*? />    (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)
    首尾空白字符的正则表达式:^s*|s*$或(^s*)|(s*$)    (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
    腾讯QQ号:[1-9][0-9]{4,}    (腾讯QQ号从10000开始)
    中国邮政编码:[1-9]d{5}(?!d)    (中国邮政编码为6位数字)
    IP地址:d+.d+.d+.d+    (提取IP地址时有用)
    IP地址:((?:(?:25[0-5]|2[0-4]d|[01]?d?d).){3}(?:25[0-5]|2[0-4]d|[01]?d?d))  
    
    
    钱的输入格式:
       1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00",和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$ 
       2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$ 
       3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$ 
       4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$ 
       5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$ 
       6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$ 
       7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ 
       8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,[0-9]{3})*)(.[0-9]{1,2})?$ 
       备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读