【问题标题】:Regex to include certain characters and two words (true and false)正则表达式包含某些字符和两个单词(真假)
【发布时间】:2014-02-01 17:02:11
【问题描述】:

我想在 JavaScript 中使用 eval() 来计算方程式和逻辑表达式。为了清理输入,我只想允许数字、数学运算符和单词“真”和“假”。

我记下的第一部分:/^[\d\+\-\*\/()\|&!<>=]+$/matches 数字和运算符。

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

我只想在可接受的字符列表中包含真假。

我正在使用带有 match() 方法的 JavaScript。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

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

    /^(?:[\d+*\/()|&!<>=-]|\btrue\b|\bfalse\b)+$/i
    

    我删除了您的正则表达式中的一些转义,因为正则表达式中的许多元字符都成为字符类中的文字字符,除了 -,我在删除反斜杠时将其放在末尾。

    我还添加了不区分大小写的标志,这样您就可以同时匹配truefalse 的大写字符。

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

    【讨论】:

    • 就是这样。谢谢!正则表达式对我不利。我已经花了 6 个小时,但无法让它工作。现在我需要研究一下?:...
    • @user3195878 这是一个非捕获组 ((?: ... )) 它就像一个捕获组 (( ... )) 但不存储匹配项(因此它对内存的压力较小并略微提高性能)。使用一个可以:使用 OR | 限制哪些模式是可选的,并在组上使用量词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    相关资源
    最近更新 更多