# 正则 - 常用正则表达式

记录常用的正则表达式,方便查用

# 1. 判断并返回 IE 版本

let isIE = document.documentMode || +(navigator.userAgent.match(/MSIE (\d+)/) && RegExp.$1)
1

因为 IE11 修改了 userAgent 字符串,不再包含MSIE的标识。IE11 感觉自己高大上了,不能再和你们这群奇模怪样的 IE6-10 混了,加上了 like Gecko 标识,想要蒙混过关。所以要使用 document.documentMode 用来判断 IE 11,IE 家族的独有方法。

# 2. 校验邮箱

摘自 (opens new window)

const emailReg = /^(([^<>()[\]\\.,;:\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,}))$/;
1

# 3. 判断字符串语言

Unicode 区段

区段范围 区段名称 英文名称 码位数 已定义字元数 文字
U+2E80..U+2EFF 中日韩汉字部首补充 CJK Radicals Supplement 115 汉字
U+2F00..U+2FDF 康熙部首 Kangxi Radicals 214 汉字
U+2FF0..U+2FFF 表意文字描述字符 Ideographic Description Characters 12 共用
U+3000..U+303F 中日韩符号和标点 CJK Symbols and Punctuation 64 汉字(15个), 谚文(2个), 共用(43个), 继承(4个)
U+3040..U+309F 平假名 Hiragana 93 平假名(89个), 共用(2个), 继承(2个)
U+30A0..U+30FF 片假名 Katakana 96 片假名(93个), 共用(3个)
U+3100..U+312F 注音符号 Bopomofo 43 注音字母
U+3130..U+318F 谚文相容字母 Hangul Compatibility Jamo 94 谚文
U+3190..U+319F 汉文训读 Kanbun 16 共用
U+31A0..U+31BF 注音符号扩展 Bopomofo Extended 32 注音字母
U+31C0..U+31EF 中日韩笔画 CJK Strokes 36 共用
U+31F0..U+31FF 片假名拼音扩展 Katakana Phonetic Extensions 16 片假名
U+3200..U+32FF 中日韩围绕字元及月份 Enclosed CJK Letters and Months 255 谚文(62个), 片假名(47个), 共用(146个)
U+3300..U+33FF 中日韩相容字元 CJK Compatibility 256 片假名(88个), 共用(168个)
U+3400..U+4DBF 中日韩统一表意文字扩展区A CJK Unified Ideographs Extension A 6,582 汉字
U+4DC0..U+4DFF 易经六十四卦符号 Yijing Hexagram Symbols 64 共用
U+4E00..U+9FFF 中日韩统一表意文字 CJK Unified Ideographs 20,989 汉字
U+A960..U+A97F 谚文扩展-A Hangul Jamo Extended-A 29 谚文
U+AC00..U+D7AF 谚文音节 Hangul Syllables 11,172 谚文
U+F900..U+FAFF 中日韩相容表意文字 CJK Compatibility Ideographs 472 汉字
  • 常用中文判断: /[\u4E00-\u9FFF]/

# 4.校验 URL

const urlReg = /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;

const urlStr1 = 'https://haha.xxx.com/xxx/xxx';
console.log(urlReg.test(urlStr1)); // true

const urlStr2 = 'sss://haha.xxx.com/xxx/xxx';
console.log(urlReg.test(urlStr2)) // false
1
2
3
4
5
6
7

# 5.校验 IPv4

const ipv4Reg = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

const ipv4Str1 = '127.0.0.1';
console.log(ipv4Reg.test(ipv4Str1)); // true

const ipv4Str2 = '127.0.0.1655';
console.log(ipv4Reg.test(ipv4Str2)) // false
1
2
3
4
5
6
7

# 参考

上次更新: 12/17/2021, 4:30:19 PM