正则表达式使用套餐合集

正则表达式是个非常好用的工具,熟悉正则表达式写法的攻城狮可以快速地用它来处理各种预格式化的数据。

说人话!额,就是正则表达式很好用,可以随时筛选和格式化各种数据。

1.正则提取html图文内容中的纯文字(保留空白)

// 清除所有标签/标签对,保留  等
text = htmlcontent.replace(/<[^>]*>/g, '');
// 解读:
// < 尖括号左
// [^>] 除了右尖括号“>”外的其他字符
// * (其他字符)重复零次或多次
// > 尖括号右
// 格式:
// `<anycode>`
//截取前100个字符
text = text.substr(0,100);

2.正则清除html图文中的标签、空白,提取纯文字(不留空格)

// 不保留&nbsp;&emsp;等html空白字符代码
text = htmlcontent.replace(/<[^>]*>|\s|\&(nb|en|em|thin)sp\;/g, '');
// 解读:
// <[^>]*> 匹配标签,同上例解读
// | 或
// \s 任意空白符
// \&(nb|en|em|thin)sp\; 空白字符HTML代码,如&nbsp;或&thinsp; (反斜杠为转义,即\& = & , \; = ;)
// 另注:
// (x|y|z) 表示x、y、z中的任意一个

3.正则清除html中所有标签的属性(img标签除外),用于清除样式等

// 排除img标签,清除所有标签的行内属性
text = htmlcontent.replace(/(\<(?!img)\/?\w+)\s{1}[^>]+(>)/g, '$1$2')
// 解读:<br/>
// (\<(?!img)\/?\w+) 除了img之外的其他标签,
// “(?!img)”,叹号表示非,即任意不匹配"img"的字符零次或一次
// “\/?”, 反斜杠即标签结束“/”出现零次或一次
// “\w+”, 字母数字下划线出现一次或多次
// 此处加()以表示当做一个变量,根据位置,对应$1
// \s{1} 一个空白符
// [^>] 除了右尖括号“>”外的其他字符
// + (其他字符)重复一次或多次
// (>) 右尖括号“>”,此处加()以表示当做一个变量,根据位置,对应$2
// 另注:
// 匹配结果有三种格式:“<anycode>” 和 “</anycode>” 以及 “<anycode/>”

4.常用正则检测账号规则:

  • 邮箱检测
  • 手机号检测
  • QQ号检测
  • 微信账号检测
  • 密码检查
  • 特殊字符筛选
  • 身份证号检测
//邮箱检测:
flag = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(p)
// 解读:
// \w+ 字母或数字或下划线一个或多个
// ([-+.]\w+)* -+.三个字符的任意个数及组合 与 一个或多个字母或数字或下划线 的 拼接结果
// 出现零次或多次,如 -name或+.hello-ei
// @ 邮箱域标志“@”
// \w+ 略
// ([-.]\w+)* 原理同解读第二行
// \. 域名后缀符号“.”
// \w+ 略
// ([-.]\w+)* 略
//p为待检测字符串,flag为检查结果
//手机号检测:
flag = /^1[3,4,5,7,8]{1}[0-9]{9}$/.test(p)
// 解读:手机号都是1开头,第二位目前仅有3,4,5,7,8五个数字中的一个,然后补全数字即可。
//QQ号检测:
flag = /^[1-9]{1}[0-9]{5,11}$/.test(p)
//微信检测:
flag = /^[a-zA-Z\d_]{5,}$/.test(p)
//8-16位数字+英文字母密码检测:
flag = /^\w{8,16}$/.test(p)
//8-20位密码并至少包含一位大写字母一位小写字母一位数字
flag = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,20}$/.test(p)
//特殊字符检测:
flag = /['"<>!]/.test(p)
// 解读:检查特殊字符 英文单双引号('")、尖括号(<>)、感叹号(!) 任意一个或多个的组合
//身份证号:
flag = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(p)
// 部分字段解读:
// ^[1-9] 非零数字开头
// ((0[1-9])|(1[0-2])) 对应位置是出生月份,组合只有01-09和11、12
// ((0[1-9])|([1-2][0-9])|(3[0-1])) 对应位置是出生日期,组合有01-31
// (\d|x|X)$ 身份证的最后一位有可能是数字或小写英文字母(x)或大写英文字母(X)

5.获取文件后缀名(上传文件添加类型限制时使用)

/*file.name为上传的文件file属性中的文件名*/
ext = /\.[^\.]+$/.exec(file.name)
// 解读:
// \. 后缀名标志符号“.”
// [^\.] 除了符号“.”以外的其他字符
// + (其他字符)重复一次或多次
// $ 以(其他字符)结束
// 例子:
// 获取小写形式不带点号的后缀名
// ext = (/\.[^\.]+$/.exec(file.name)[0]).replace(".","").toLowerCase();

附录:常用字符

代码 说明
【元字符】
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
【限定符】
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
【反义词】
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
【其他】
[] 方括号用于查找某个范围内的字符

感谢收藏:

!!!更多表达式持续追加中,欢迎将本页面加入收藏以备查阅。
NOOLDEY

本文作者:NOOLDEY

做一个诗情画意的码农,皮皮猪,我们走!

原文链接: http://zhuweisheng.com.cn/html/regex/

本站文章如无特殊声明均为原创,创作不易,转载请注明来源,谢谢!