首页  >  问答  >  正文

javascript - 如何用正则表达式匹配正则表达式?

我最近看了《30分钟学会正则表达式》
看到博主自己做了一个C#版本的正则测试器,所以我突发奇想,昨晚写了个js版本的正则测试器。但是呢还是比较粗糙。关于怎么判断用户输入的正则表达式是正确的正则表达式,题主使用了以下的方法。

var pattern = /^\/(.*)\/([igm]{0,3})$/;
var testStr1 = '/ab[de]/igm';
var result = testStr1.match(pattern);
var MatchedRegExp = new RegExp(result[1], result[2]);

像这样如此这般就可以用用户输入生成一个正则表达式。

但是我遇到了以下问题:
如果用户输入的正则中有换行符的话,就会出错。
比如: testStr = '/ab\ncd/igm'
因为本来作为输入结尾的$匹配上了\n,这样整个正则就有可能无法正确匹配了。

所以在此询问一下有没有比较好的实现方法?

根据本问题中@依云大神提出的方法,我实现了一个测试器,在此表示感谢。链接:《自己实现的一款在线Javascript正则表达式测试器——JRE-Parser》

大家讲道理大家讲道理2749 天前580

全部回复(2)我来回复

  • 巴扎黑

    巴扎黑2017-04-10 14:28:14

    谢谢@Skyfei的热心回答。

    不过我更偏爱依云大神在评论里的答案~:
    直接用 .indexOf.lastIndexOf 取两个 / 的位置

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 14:28:14

    你想实现的功能,有个在线验证正则表达式的比较厉害。你可以参考参考 http://leaverou.github.io/regexplained/

    其实可以用eval函数。 比如一个正则表达式 /ab[de]/igm 要转换成正则,不需要你做的那么麻烦
    直接 eval('/ab[de]/igm')

    回复
    0
  • 取消回复