我想在 javascript 中使用正则表达式比较两个字符串。
以下是要求 -
String1 = 'xyz.east.abc.com'
String2 = 'xyz.*.abc.com'
String3 = 'pqr.west.efg.com'
String4 = 'pqr.*.efg.com'
我想要一个正则表达式,通过它我应该能够比较上面的字符串,并且输出应该是 String1 和 String2 相同,String3 和 String4 相同。
我尝试过使用不同的组合,但无法找出执行任务的正确正则表达式。
您可以实现一个小函数来为您完成此操作:
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&");
}
function fuzzyComparison(str, mask) {
var regex = '^' + escapeRegExp(mask).replace(/\*/, '.*') + '$';
var r = new RegExp(regex);
return r.test(str);
}
Run Code Online (Sandbox Code Playgroud)
因此,您在这里所做的就是转义所有正则表达式元字符 but *,然后将其替换为.*意味着“任意数量的任意字符”。
然后,您根据要比较的字符串测试创建的正则表达式。
该解决方案比使用正则表达式更好(对于您所解释的任务),因为您不需要对所有目标正则表达式进行硬编码,并且可以在运行时执行此操作。
JSFiddle:http://jsfiddle.net/60b78b8o/
| 归档时间: |
|
| 查看次数: |
15093 次 |
| 最近记录: |