我有两个表达方式:
1)/\W/
删除任何特殊字符(下划线_除外)。
2)/lorem/
- 字符串必须包含lorem。
我可以将这2个正则表达式组合成1个正则表达式吗?
因此,例如,如果针对l-orem
运行,则正则表达式必须匹配,因为它包含lorem和连字符将被忽略。
提前致谢。
答案 0 :(得分:2)
你可以分步进行:
var str = 'l-orem';
str.replace(/\W/g, '').match(/lorem/); // ['lorem']
var str = 'l-oram';
str.replace(/\W/g, '').match(/lorem/); // null
答案 1 :(得分:1)
您可以根据具体需要使用以下代码(具体取决于您是否需要删除_
,请注意\W
不会将其删除,具体取决于您是否需要区分大小写匹配与否)
var str = '123l-orem';
console.log(/lorem/.test(str.replace(/\W/g, ''))); //true
console.log(/lorem/.test(str.replace(/[^a-z0-9]+/gi,''))); //true
var str = 'll_oremm';
console.log(str.replace(/\W/g, '').match(/lorem/)); //beware here!!!! -> null
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/)); //lorem
console.log(/lorem/.test(str.replace(/[^a-z0-9]+/gi,'')));
var str = 'L_-O&R@E^MmMm%';
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/)); //null
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/i)); //LOREM
console.log(/lorem/i.test(str.replace(/[^a-z0-9]+/gi,''))); //true
var str = 'a_b-^c123';
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/)); //null
console.log(str.replace(/[^a-z0-9]+/gi,'').match(/lorem/i)); //null
console.log(/lorem/i.test(str.replace(/[^a-z0-9]+/gi,''))); //false
答案 2 :(得分:0)
两个正则表达式的组合将如下所示:
/.*l\W*o\W*r\W*e\Wl.*/
(^这是一个javascript正则表达式。在Java中,开头和结尾都不需要斜杠)。