【问题标题】:Make a regex from a string that only matches itself从仅匹配自身的字符串创建正则表达式
【发布时间】:2016-08-22 08:19:37
【问题描述】:

我想要一种从只匹配原始字符串的字符串生成正则表达式的方法。

myRegexGenerator('babies/canfly?a=probably-not');
// returns an equivalent to /^babies\/canfly\?a=probably-not$/

【问题讨论】:

  • 这听起来很奇怪。你打算做什么?
  • 只需escape 并添加^$
  • 制作这个正则表达式的目的是什么?
  • 要么按照 georg 所说的去做,要么直接比较字符串而不使用正则表达式,如果后者在你编写的任何代码中都是可行的(我相信你有你的理由)。
  • 要在其他字符串中搜索字符串,您可以使用 indexOf() 之类的方法,如果您需要计算字符串匹配的时间,您可以使用循环轻松完成,并且 indexOf() 因为您可以将起始索引作为第二个参数。

标签: javascript regex ecmascript-6


【解决方案1】:

您基本上只需要转义任何特殊的正则表达式字符。然后创建一个 RegExp 对象。

var input = 'babies/canfly?a=probably-not';
new RegExp(input.replace(/[^$]/g, "\$&"));

显然,在使 RegExp 对不同输入更健壮之前,您捕获和转义的特殊代码越多。您可以使用regular-expressions.info 之类的参考来确保您涵盖所有内容。或者你可以只覆盖你知道的任何可能的字符。

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多