Javascript 正则表达式包括某些字符和两个单词(真和假)

Javascript 正则表达式包括某些字符和两个单词(真和假),javascript,regex,Javascript,Regex,我想在JavaScript中使用eval来计算公式和逻辑表达式。为了清理输入,我只想允许数字、数学运算符和单词'true'和'false' 我记下的第一部分:/^[\d\+\-\*\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\&!=]+$/匹配数字和运算符 我发现在括号中加上true和false将匹配这些字母的任何累积。正则表达式命令的各种其他排列有时会验证任何包含“true”的字符串,甚至验证任何包含任何允许字符的字符串 可以说,我只想在可接受的字符列表中包含true和

我想在JavaScript中使用eval来计算公式和逻辑表达式。为了清理输入,我只想允许数字、数学运算符和单词'true'和'false'

我记下的第一部分:/^[\d\+\-\*\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\&!=]+$/匹配数字和运算符

我发现在括号中加上true和false将匹配这些字母的任何累积。正则表达式命令的各种其他排列有时会验证任何包含“true”的字符串,甚至验证任何包含任何允许字符的字符串

可以说,我只想在可接受的字符列表中包含true和false


我将JavaScript与match方法结合使用。

您可以使用OR运算符和非捕获组来保持字母的正确和错误顺序,并使用单词边界来防止其他单词字符绕过它们:

/^(?:[\d+*\/()|&!<>=-]|\btrue\b|\bfalse\b)+$/i
我删除了正则表达式中的一些转义,因为正则表达式中的许多元字符成为字符类中的文字字符,除了-,我在删除反斜杠时将其放在末尾

我还添加了不区分大小写的标志,以便您也可以将大写字符匹配为true和false


您可能还想在其中接受空格,但因为我不知道您的输入可能是什么,所以我没有自己添加。

就是这样。谢谢Regex对我很反感。我花了6个小时在这上面,但没能让它工作。现在我需要调查一下?:…@user3195878这是一个非捕获组?:。。。就像一个俘虏小组。。。但是,如果不存储匹配项,则会减少内存压力,并略微提高性能。使用一个可以:限制哪些模式是可选的或|,并在组中使用量词。