javascript - 字符串中的所有字符都必须匹配正则表达式

标签 javascript regex

很抱歉,如果这之前已经出现过,但我在谷歌上找不到任何能提供我想要的东西的东西。

我有一个可以写表达式的字段:x>1 , x>2||x<1 (x>1) && (x<2)等等
我想要的是一个检查表达式的正则表达式,因此它只能包含某些有效字符来防御代码注入(inject)。 a.1不应该匹配。

到目前为止,我正在使用这个:

expression.match('[xX<>=|0-9&().]')

但这也会返回包含任何这些字符的任何内容。我想要的是一个表达式,只有当所有字符都匹配正则表达式中的任何一个时才返回。

最佳答案

您需要*+字符类和 anchor 之后的量词:

/^[xX<>=|0-9&()\s.]*$/.test(expression)
 ^                 ^^

现在,它将匹配
  • ^ - 字符串开头
  • [xX<>=|0-9&\s().]* - 零个或多个(如果您使用 +,则为一个或多个)在 char 类
  • 中定义的字符
  • $ - 字符串结束。

  • 简短演示:

    console.log(/^[xX<>=|0-9&\s().]*$/.test("a.1"));
    console.log(/^[xX<>=|0-9&\s().]*$/.test("(x>1) && (x<2)"));


    注意我添加了\s也匹配空格。

    关于javascript - 字符串中的所有字符都必须匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40037021/

    相关文章:

    javascript - Angularjs - 使用 "this"关键字从其范围之外更新 ng-repeat 中的各个值

    javascript - Redux状态树结构: "same type of data with different format/amounts of detail"

    javascript - 通过自定义 Grunt 任务处理文件

    javascript - 如何在浏览器中运行我的 nw-js 应用程序?

    javascript - jQuery 实时验证

    Javascript正则表达式,用经过处理的数字替换数字

    regex - 如何使用正则表达式只匹配字符串中多次出现的字母?

    c# - 匹配和替换字符串中的文本,同时保留未替换的文本

    python - 使用python中的正则表达式从字符串中提取不同格式的日期

    带有自定义消息的 jquery 正则表达式