JS 正则表达式#3案例
2020-07-01 本文已影响0人
IamaStupid
匹配字符串中的变量名称
str = "三好学生Hello w888 8ss88 {{msg}} - {{person.name}}--}}--{{}}"
reg = new RegExp(/\w+/g);
arr = reg.exec(str)
arr2 = str.match(reg)
console.log('exec:', arr)
console.log('match:', arr2)
// exec: ["Hello", index: 4, input: "三好学生Hello w888 8ss88 {{msg}} - {{person.name}}--}}--{{}}", groups: undefined]
// match: (6) ["Hello", "w888", "8ss88", "msg", "person", "name"]
reg = new RegExp(/[a-zA-Z]+/g);
arr = reg.exec(str)
arr2 = str.match(reg)
console.log('exec:', arr)
console.log('match:', arr2)
// exec: ["Hello", index: 4, input: "三好学生Hello w888 8ss88 {{msg}} - {{person.name}}--}}--{{}}", groups: undefined]
// match: (6) ["Hello", "w", "ss", "msg", "person", "name"]
\w 等价于 ‘[A-Za-z0-9_]’,字母数字下划线
. 查找单个字符,除了换行和行结束符
n+ 匹配任何包含至少一个 n 的字符串
*、+ 和 {n,} 重复类具有强贪婪性,表现为贪婪的无限性。
如果不加+号,match匹配的就是一个个字母。
验证邮箱
function validEmail (emailStr) {
var reg = new RegExp(/^[a-zA-Z0-9-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z]+$/g);
let flag = reg.test(emailStr);
console.log("validEmail "+emailStr+":"+flag);
}
// absd@b.com // true
// @a.com // false
// abc@a.b.com // true
// abc@a.b.com/ // false
// abc@.com // false
// absd@a-b.com // true
删除空格
// 删除字符串左右的空白
function replaceTrim (str) {
var reg = new RegExp(/(^\s+|\s+$)/,'g');
let newStr = str.replace(reg, "");
console.log("replaceKg "+str+":"+newStr);
}
// 删除所有空白 包括字符串中间的空白
function replaceAll (str) {
var reg = new RegExp(/\s+/,'g');
let newStr = str.replace(reg, "");
console.log("replaceKg "+str+":"+newStr);
}
匹配任意双字节的汉字
reg = new RegExp(/[^\u0000-\u00ff]+/g);
str = '中国光谷ggggggggg sd ';
arr = reg.exec(str)
arr2 = str.match(reg)
console.log('exec:', arr)
console.log('match:', arr2)
// exec: ["中国光谷", index: 0, input: "中国光谷ggggggggg sd ", groups: undefined]
// match: ["中国光谷"]