js常用正则表达式

2017/05/17 javascript 2019/10/21

对常用的js正则表达式进行整理,归档!!!

什么是正则表达式?它有什么作用?

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

常用的js正则表达式

  1. 只能输入数字: /^\d*$/

  2. 只能输入n位数字 : /^\d{n}$/

  3. 至少输入n位数字 : /^\d{n,}$/

  4. 只能输入有两位小数的正实数 : /^\d+(.\d{2})?$/

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

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

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

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

  9. 只能输入由数字和26个英文字母组成的字符串 : /^[a-zA-Z0-9]+$/

  10. 只能输入汉字 : /^[\u4e00-\u9fa5]*$/

  11. 验证Email地址: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/

  12. 验证InternetURL: /^(http|https):\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%\s\S]*)?$/

  13. 验证电话号码: /^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$/

  14. 验证身份证号:

/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/

  1. 验证一年的12个月 : /^(0?[1-9]|1[0-2])$/

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

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

  4. 匹配空行 : /\n[\s| ]*\r/

  5. 匹配html标签: /<(.*)>(.*)<\/(.*)>|<(.*)\/>/

  6. 匹配首尾空格: /(^\s*)|(\s*$)/

  7. QQ: /[1-9][0-9]{4,}/

  8. 中国邮政编码: /[1-9]\d{5}(?!\d)/

  9. ip地址: /\d+\.\d+\.\d+\.\d+/

  10. 正则匹配a标签: /<a[^>]*>[^>]*<\/a>/

  11. 匹配除strong标签以外的其它标签: (<[^strong][^>]*[^\/strong]>)

  12. 匹配img标签: /<img[^>]*>/

  13. 判断是否以html标签开头的: /^<([a-zA-Z1-6]+)(\s*[^>]*)?>/.test(content)

  14. 隐藏手机号中间4位:numStr.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')

  15. 格式化数字12345678990为, 1,234,567,890:numStr.replace(/\B(?=(\d{3})+$)/g, ',')

正则表达式结合js对输入的限制

  1. javascript trim实现:
    String.prototype.trim = function(){
      return this.replace(/(^\s*)|(\s*$)/g, "");
    }
    
  2. 计算字符串的长度(一个双字节字符长度计2,ASCII字符计1: String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}

  3. 用正则表达式限制只能输入中文: onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"

  4. 用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"

  5. 用正则表达式限制只能输入数字: onkeyup="value=value.replace(/[^\d]/g,'')

  6. 用正则表达式限制只能输入数字和英文: onkeyup="value=value.replace(/[\W]/g,'')

  7. 去掉除img标签外的其它标签: var after = str.replace(/<(?!img)[^>]*>/g,"");

  8. 判断是否以html标签开头的: /^<([a-zA-Z1-6]+)(\s*[^>]*)?>/.test(str);

参考链接

  1. 正则表达式基本语法: http://www.runoob.com/regexp/regexp-syntax.html

  2. 入门教程: https://deerchao.net/tutorials/regex/regex.htm

搜索

    目录

    更多最新信息,欢迎关注公众号

    👇🏻

    公众号二维码
    扫码关注「前端知识总结」公众号