【问题标题】:javascript new regexp dynamicjavascript新的正则表达式动态
【发布时间】:2018-08-07 14:15:20
【问题描述】:

我正在创建一个动态的regex,但我对如何转义字符有疑问,所以有人可以对此有所了解吗?

我正在使用带有一些后端配置的 PHP,管理员可以从后端添加 regexp 以验证无效字符,我在 PHP 上得到了这个值,所以我做了什么

var regex = RegExp(<?php echo $regex ?>);

但我收到了SyntaxError: Invalid regular expression: 之类的错误,我知道我需要转义动态字符,但不知道如何转义。

编辑

我正在从后端尝试这个值

<>{}[\]!@#$+=%^*()/;

新编辑

根据@anubhava 的建议,我正在通过preg_quote() 转义特殊字符,但在 Regex.test 上它总是失败,我的意思是它总是得到 false,即使它应该返回 true。

这是我的代码,

var invalidCharRe = new RegExp(SOME_MY_VARIABLE);
var result = invalidCharRe.test(value)

其中SOME_MY_VARIABLE 是一个动态特殊字符(我通过preg_quote()value 从PHP 中获取它是我的文本框值

【问题讨论】:

  • 您可以添加您尝试使用的值吗?
  • JavaScript 正则表达式应该用/ 括起来,例如var regex = RegExp(/&lt;\?php echo \$regex \?&gt;/);。请详细说明您想要实现的目标。我认为我写的表达式应该逐字匹配&lt;?php echo $regex ?&gt;
  • 试试这个 php:&lt;?php echo preg_quote($regex, '/'); ?&gt;
  • 请看我的编辑@Archer
  • @KeyurShah 你误解了评论。阿努巴瓦是正确的。

标签: javascript php regex string


【解决方案1】:

由于您使用 php 来回显您的正则表达式,您可以利用 php 的 preg_quote function 预先转义所有特殊的正则表达式元字符,如下所示:

var regex = /<?php echo preg_quote($regex, '/'); ?>/

请注意,此处无需调用 new RegExp,因为 Javascript 将始终为正则表达式获取静态字符串。

【讨论】:

  • 您在字符串的开头和结尾添加了/ 用于转义字符?
  • / 前后 php 标签用于正则表达式创建的 Javascript 语法,例如let re = /some_regex/
  • 你能看看我的新编辑吗@anubhava 这对我不起作用:(
  • 但是我通过全局 javascript 对象获取 SOME_MY_VARIABLE 这就是我这样写的原因,如果我这样写 /SOME_MY_VARIABLE/ 那么它被视为字符串
  • 感谢您的回复,因此我无法添加 php 代码纯粹是 .js 文件对此有何建议?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 2018-03-21
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多