正则表达式

2018-05-30  本文已影响11人  阿亮2019

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.png
exec成功返回一个数组,数组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'));

廖雪峰 正则表达式

上一篇下一篇

猜你喜欢

热点阅读