How to dynamically create regex to use in .match Javascript?
本问题已经有最佳答案,请猛点这里访问。
我需要动态创建正则表达式JavaScript中使用的正则表达式。那怎么可能呢?
1 2 3 | var p ="*|"; var s ="|*"; "*|1387461375|* hello *|sfa|* *|3135145|* test".match(/"p"(\d{3,})"s"/g) |
这是正确的regex:
即使我在p和s上加反斜杠,它也不起作用。有可能吗?
Regexp是您的朋友:
1 2 3 4 5 | var p ="\\*\\|", s ="\\|\\*" var reg = new RegExp(p + '(\\d{3,})' + s, 'g') "*|1387461375|* hello *|sfa|* *|3135145|* test".match(reg) |
工作示例。
您可以先使用变量构造一个
1 2 3 4 5 6 7 8 9 10 | var p ="*|"; var s ="|*"; var re = new RegExp(p.replace(/([*|])/g, '\\$1') +"(\\d{3,})" + s.replace(/([*|])/g, '\\$1'),"g"); var m ="*|1387461375|* hello *|sfa|* *|3135145|* test".match(re); console.log(m); //=> ["*|1387461375|*","*|3135145|*"] |