我想使用eval()
在 JavaScript 中计算方程和逻辑表达式。为了净化输入,我只想允许数字、数学运算符以及单词“true”和“false”。
我记下的第一部分:/^[\d\+\-\*\/()\|&!<>=]+$/
匹配数字和运算符。
我发现添加 true
和false
括号中的字符将匹配这些字母的任何累积。正则表达式命令的各种其他排列有时会验证包含“true”的任何字符串,甚至包含任何允许的字符的任何字符串。
可以这么说,我想要的只是将 true 和 false 包含在可接受的字符列表中。
我正在使用 JavaScript 和 match()
方法。
最佳答案
您可以使用 OR 运算符和非捕获组来保持 true
和 false
中字母的顺序,并使用单词边界来阻止其他单词字符绕过他们:
/^(?:[\d+*\/()|&!<>=-]|\btrue\b|\bfalse\b)+$/i
我删除了正则表达式中的一些转义符,因为正则表达式中的许多元字符都变成了字符类中的文字字符,但 -
除外,我在删除反斜杠时将其放在末尾。
我还添加了不区分大小写的标志,以便您也可以匹配 true
和 false
的大写字符。
您可能还想接受其中的空格,但由于我真的不知道您的输入是什么,所以我自己没有添加它。
关于javascript - 正则表达式包含某些字符和两个单词(true 和 false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21500899/