https://www.jianshu.com/p/d771828f8fd4 写的很赞~
\d{6} \s+ 不要忘了前面的斜杠,老是忘!!!!!
正则表达式用来匹配字符串
^
表示字符串的开始
$
表示字符串的结束
[]
表示可以是其中一个 例如: [a-zA-Z]表示大写小写字母中的一个,但是不能没有
+
表示至少一个
*
0个或多个
\d
只能匹配 一个 数字 // 注意前面一个\
不能少
\d{n}
匹配 n个 数字
\d{n, m}
匹配 n到m个 数字,其中n < m。比如 /\d{3,5}/.test('1234567')为true;
\w
匹配 一个 字母或数字
\w{n}
匹配 n个 字母或数字
\w{n, m}
匹配 n到m个 字母或数字,其中n < m。
\s
表示一个空格
\s+
表示至少一个空格
|
表示或关系 比如实现trim操作: string.replace(/^\s+|\s+$/g, '')
.
表示可以匹配任意 一个字符,但不能没有,
reg = /^zs.$/;
reg.test('zs'); false
reg.test('zsl'); true
*
表示0次或多次
匹配前一个表达式0次或多次。等价于 {0,}。
例如,/bo*/会匹配 "A ghost boooooed" 中的 'booooo' 和 "A bird warbled" 中的 'b',但是在 "A goat grunted" 中将不会匹配任何东西。
邮箱正则:
// test case
// shengliang.zheng@owitho.com
// 1004721118@qq.vip.com
// zhengshl2012@153.com
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$;
工作中
// 黄大佬做法
const buyLinkReg = new RegExp(`^https?:\/\/${API_ORIGIN_NO_PROTOCOL}\/openrack\/(\\w{8}(-\\w{4}){3}-\\w{12}?)\/buy$`, '');
if (buyLinkReg.test(value)) {
this.setState({
[name]: value.trim().replace(buyLinkReg, '$1')
} );
}
// 我的做法
export function BuyLinkUUIDReg(buyLink: string): string {
const reg = /\w{8}(-\w{4}){3}-\w{12}/;
const res = buyLink.match(reg);
if (res && res[0]) {
return res[0];
} else {
return '';
}
}
test和exec的区别
image.pngexec成功返回一个数组,数组key为0的value值则是匹配的值,index值为下标;失败返回null,
const str = 'fdfjlsd-4-dj-5-fglds-3-fj';
const reg = /\d/;
const res = reg.exec(str);
console.log(str); // fdfjlsd-4-dj-5-fglds-3-fj
console.log(res); // []
const res2 = reg.exec(str);
console.log(str); // fdfjlsd-4-dj-5-fglds-3-fj
console.log(res2); [] 跟上面的值
// replace用法1 句子中替换词语
var p = 'lazy dog, was it really lazy?';
var regex = /dog/gi;
console.log(p.replace(regex, 'ferret')); // "lazy ferret, was it really lazy?"
console.log(p); // 'lazy dog, was it really lazy?'; 不变
// replace用法2 更换日期
const date = '09/22/2018';
const reg = /(\d{2})\/(\d{2})\/(\d{4})/;
console.log(reg.test(date));
console.log(date.replace(reg, '$3-$1-$2'));
网友评论