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

时间:2016-10-14 07:08:22

标签: javascript regex

我很抱歉,如果之前已经出现这种情况,但我无法在google上找到任何可以提供我想要的东西。

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

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

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

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

1 个答案:

答案 0 :(得分:7)

你的角色类和主持人后需要*+量词:

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

现在,它将匹配

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

简短演示:

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

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