我很抱歉,如果之前已经出现这种情况,但我无法在google上找到任何可以提供我想要的东西。
我有一个可以编写表达式的字段:x>1
,x>2||x<1
(x>1) && (x<2)
等。
我想要的是一个正则表达式,它检查表达式,因此它只能包含一些有效的字符来防止代码注入。 a.1
不应该匹配。
到目前为止,我正在使用它:
expression.match('[xX<>=|0-9&().]')
但是这也会返回包含任何这些字符的内容。我想要的是一个表达式,只有当所有字符都匹配正则表达式中的任何一个时才会返回。
答案 0 :(得分:7)
你的角色类和主持人后需要*
或+
量词:
/^[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)"));
&#13;
注意我添加了\s
来匹配空格。