如何在javascript中验证正则表达式?
Posted
技术标签:
【中文标题】如何在javascript中验证正则表达式?【英文标题】:How to validate a regex expression in javascript? 【发布时间】:2017-01-26 23:01:49 【问题描述】:我有一个用户表单,它使用户能够输入正则表达式并提交到服务器。这些正则表达式的服务器端验证存在于现有用户中,但我需要 javascript 正则表达式验证以在用户输入他的正则表达式后立即提示用户。
一些示例正则表达式:
(.*?)_(.*?)_.*_(INS|UPD|DEL|UPSERT)$ -- CORRECT
^Schedule_(.a*) -- CORRECT
(IP(.*?)_(.*?)_.*_(INS|UPD|DEL|UPSERT)$ -- WRONG
注意:正则表达式将在服务器端(Elasticsearch)运行
【问题讨论】:
这些正则表达式是否会在浏览器中运行?基本上,您认为有效的正则表达式是什么——JS 正则表达式有效吗?珀尔?使用的语法是否有限制,比如说,你可以有反向引用或环视吗? @vlaz:这些正则表达式不会在浏览器中运行。它被提交到服务器(java),然后交给弹性搜索查询以获得结果。所以elasticsearch regex 应该是有效的。 我不熟悉 elasticsearch 认为有效与否,但如果你有服务端验证,你能把它翻译成 JS 吗?它可能需要一些重组,但我想它会起作用。 【参考方案1】:使用try/catch
和RegExp
构造函数,您可以跟踪它是否有效Regex
。请查看下面的 sn-p 以获得更多了解。
var isValid = true;
try
new RegExp("(.*?)_(.*?)_.*_(INS|UPD|DEL|UPSERT)$");
catch(e)
isValid = false;
if(!isValid) alert("This is invalid regular expression");
else alert("This is valid regular expression");
【讨论】:
以上是关于如何在javascript中验证正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章