很抱歉,如果这之前已经出现过,但我在谷歌上找不到任何能提供我想要的东西的东西。
我有一个可以写表达式的字段: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/