如何使用Ruby的规则在JavaScript中验证正则表达式?

时间:2012-01-19 09:08:20

标签: javascript ruby regex

我的数据库中有一些正则表达式,然后在Ruby中实例化,例如:

rx = Regexp.new(rx_string)

我想在使用JavaScript将其提交到我的Rails服务器的表单中正确验证正则表达式,以显示红色边框,以便在以后提交和使用时,它不会在Ruby中引发异常。 / p>

是否有一种简单的方法可以将Ruby的正则表达式引擎的定义赋予JavaScript脚本,该脚本在正则表达式在Ruby中是否有效时会出现真或假的错误吗?

2 个答案:

答案 0 :(得分:3)

Ruby的正则表达式语法和JavaScript之间的区别可以在这里找到:Differences between Ruby 1.9 and Javascript regexp

我建议使用输入字符串,删除所有Ruby功能(例如(?#comments...))并测试它是否是JavaScript中的有效正则表达式:

try {
  RegExp(input); valid = true;
} catch(e) {
  valid = false;
}

从输入字符串中删除所有Ruby功能将是一个棘手的问题。

如果没有一些超长的ruby-regex-validating-regexp,我想不出更简单的方法。

答案 1 :(得分:1)

不可能(在单个正则表达式中),因为您可以在模式中写入几乎所有内容及其有效内容,并且可以根据需要嵌套表达式。

当然可以编写一个解析正则表达式的解析器,但我很确定你不想这样做。

此处也提出了类似的问题:Regexp that matches valid regexps,答案来自RegexBuddy的作者。