我的数据库中有一些正则表达式,然后在Ruby中实例化,例如:
rx = Regexp.new(rx_string)
我想在使用JavaScript将其提交到我的Rails服务器的表单中正确验证正则表达式,以显示红色边框,以便在以后提交和使用时,它不会在Ruby中引发异常。 / p>
是否有一种简单的方法可以将Ruby的正则表达式引擎的定义赋予JavaScript脚本,该脚本在正则表达式在Ruby中是否有效时会出现真或假的错误吗?
答案 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的作者。