如何在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/catchRegExp 构造函数,您可以跟踪它是否有效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中验证正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 进阶第十一章(正则表达式)(完结)

JavaScript高级之正则表达式

教你轻松搞定javascript中的正则

JavaScript 中使用正则表达式

在 C# 和 Javascript 中验证 FQDN 的正则表达式

将 Javascript 正则表达式转换为 PHP