前端正则表达式大全

正则表达式字典

匹配中文: [\u4e00-\u9fa5]

英文字母:[a-zA-Z]

数字:[0-9]

匹配中文,英文字母和数字及_:

^[\u4e00-\u9fa5_a-zA-Z0-9]+$

同时判断输入长度:

[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}

^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$

一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:

^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$ 其中:
^ 与字符串开始的地方匹配
(?!_)  不能以_开头
(?!.*?_$)  不能以_结尾

只含有汉字、数字、字母、下划线,下划线位置不限:

^[a-zA-Z0-9_\u4e00-\u9fa5]+$

匹配双字节字符(包括汉字在内)

[^x00-xff] 

匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />
匹配空白行的正则表达式:ns*r
匹配首尾空白字符的正则表达式:^s*|s*$
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ *
匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
匹配腾讯QQ号:[1-9][0-9]{4,}
匹配中国邮政编码 [1-9]d{5}(?!d)
匹配特定数字:

  ^[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) 

匹配特定字符串:

 ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串 
  ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串 
  ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串 
  ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串 
  ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串 

在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
  只能输入数字:“^[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之间,
  
合法url

  const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/

手机号

  const re = /^[1][3,4,5,7,8][0-9]{9}$/
  const re = /^(\d3,4\d3,4|\d{3,4})?\d{7,8}$/

email

  const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

身份证

 function IdentityCodeValid(code) {
  const city = { 11: '北京', 12: '天津', 13: '河北', 14: '山西', 15: '内蒙古', 21: '辽宁', 22: '吉林', 23: '黑龙江 ', 31: '上海', 32: '江苏', 33: '浙江', 34: '安徽', 35: '福建', 36: '江西', 37: '山东', 41: '河南', 42: '湖北 ', 43: '湖南', 44: '广东', 45: '广西', 46: '海南', 50: '重庆', 51: '四川', 52: '贵州', 53: '云南', 54: '西藏 ', 61: '陕西', 62: '甘肃', 63: '青海', 64: '宁夏', 65: '新疆', 71: '台湾', 81: '香港', 82: '澳门', 91: '国外 ' }
  let tip = ''
  let pass = true

  if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) {
    tip = '身份证号格式错误'
    pass = false
  } else if (!city[code.substr(0, 2)]) {
    tip = '地址编码错误'
    pass = false
  } else {
    // 18位身份证需要验证最后一位校验位
    if (code.length === 18) {
      code = code.split('')
      // ∑(ai×Wi)(mod 11)
      // 加权因子
      const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
      // 校验位
      const parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
      let sum = 0
      let ai = 0
      let wi = 0
      for (var i = 0; i < 17; i++) {
        ai = code[i]
        wi = factor[i]
        sum += ai * wi
      }
      const last = parity[sum % 11]
      // eslint-disable-next-line eqeqeq
      if (last != code[17]) {
        tip = '校验位错误'
        pass = false
      }
    }
  }
  if (!pass) console.log(tip)
  return pass
}

function validateIdCardNo(rule, value, callback) {
  if (!value) {
    return callback(new Error('证件号码不能为空'))
  } else if (!IdentityCodeValid(value)) {
    return callback(new Error('证件号码格式不正确'))
  } else {
    callback()
  }
}

<think>好的,用户的问题是关于如何在前端使用正则表达式去除HTML标签。首先,我需要回忆一下正则表达式处理HTML标签的常用方法。根据用户提供的引用内容,比如引用[1]和[2],他们提到使用类似/<[^>]+>/g的正则表达式来匹配所有HTML标签,并用replace方法替换为空字符串。这可能是一个基础的解决方案。 不过,我记得HTML的结构可能比较复杂,比如自闭合标签(如<img />)或者标签内的属性含有>符号的情况,这时候简单的正则可能无法完全覆盖。但用户的需求是前端处理,可能更倾向于简单高效的方法,而不是完全严格的解析。这时候可能需要权衡准确性和性能。 接下来,用户提到的引用[2]中的例子,使用stripHtml函数,这正是用户需要的。所以应该给出一个类似的JavaScript函数示例,展示如何用正则表达式替换掉标签。同时,需要提醒用户这种方法的局限性,比如无法处理<script>或<style>标签内的内容,或者注释等特殊情况。 然后,用户可能还关心如何处理转义字符或者特殊符号,比如<或者>,这时候可能需要额外的处理步骤。但根据引用[2],他们似乎已经用正则表达式处理了标签,可能不需要处理这些实体编码,因为标签本身已经被去除了,剩下的文本中的实体编码可能需要另外处理。 另外,引用[3]和[4]提到不同的正则表达式模式,比如去除特定事件属性或者更复杂的标签匹配。可能需要考虑更全面的正则表达式,比如/<[^>]+>/gi,其中i修饰符用于忽略大小写,确保匹配所有标签。 最后,应该总结步骤,给出代码示例,并指出潜在的问题,推荐使用DOM解析器如DOMParser来更安全地处理,尤其是在处理不可信内容时,避免XSS攻击的风险。这符合前端开发的最佳实践,同时满足用户的需求。</think>要使用正则表达式前端去除HTML标签,可以通过以下步骤实现: ### 步骤说明 1. **基础正则表达式**: 使用`/<[^>]+>/g`匹配所有HTML标签 - `/`:正则表达式开始 - `<`:匹配标签起始符 - `[^>]+`:匹配除`>`外的任意字符(至少1次) - `>`:匹配标签结束符 - `g`:全局匹配模式[^2] 2. **JavaScript实现示例**: ```javascript function stripHTML(html) { return html.replace(/<[^>]+>/g, ''); } // 示例用法 const htmlContent = '<div><p>Hello <b>World</b>!</p></div>'; const plainText = stripHTML(htmlContent); // 输出:"Hello World!" ``` ### 注意事项 1. **局限性**: - 无法处理注释`<!-- content -->` - 不能正确解析`<script>`/`<style>`标签内的内容 - 可能误删含`<`符号的非标签内容(如数学公式) 2. **增强方案**: ```javascript // 改进版正则(包含注释处理) html.replace(/(<([^>]+)>|<!--[\s\S]*?-->)/gi, ''); ``` 3. **安全建议**: 对用户输入内容推荐使用`DOMParser`: ```javascript function safeStripHTML(html) { const doc = new DOMParser().parseFromString(html, 'text/html'); return doc.body.textContent || ""; } ``` [^1]: 基础正则表达式方法参考了HTML标签处理通用方案 [^2]: JavaScript正则实现参考了前端常用标签去除模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值