gpt4 book ai didi

javascript - 将变量插入正则表达式

转载 作者:行者123 更新时间:2023-12-02 06:20:21 24 4
gpt4 key购买 nike

我有以下工作正常,允许表单字段在空白或包含单词“hello”或通过其他验证时有效......

var re = new RegExp(/^$|^[hello]|^([FG]?\d{5}|\d{5}[AB])$/);

但我想让“你好”这个词成为一个变量的值。

我已经尝试过了,但它似乎不再起作用:
var i = "hello";
var re = new RegExp('/^$|^['+i+']|^([FG]?\d{5}|\d{5}[AB])$/');

最佳答案

您的代码中有几处错误。

  • RegExp预计 字符串 ,而不是像您在第一种情况下传递的正则表达式文字。好像RegExp虽然足够聪明,并且检测到您正在传递正则表达式文字。因此,您的第一个示例是巧合,与以下示例相同:
    var re = /^$|^[hello]|^([FG]?\d{5}|\d{5}[AB])$/;
  • /不是 作为表达式的一部分,它们是表示正则表达式文字的分隔符,很像引号 ( ' ) 表示字符串文字。因此,如果您将表达式作为字符串传递给 RegExp ,它不应包含 / .
  • 由于反斜杠也是字符串中的转义字符,因此要为表达式创建文字反斜杠,您必须对其进行转义:\\ .
  • [hello]不测试单词 hello , 它匹配 h , e , lo , 因此它等价于 [ehlo] .

  • 尽管如此,您的代码应该是:
    var i = "hello";
    var re = new RegExp('^$|^'+i+'|^([FG]?\\d{5}|\\d{5}[AB])$');

    关于javascript - 将变量插入正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11954587/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com