Javascript正则表达式,用于验证是否存在两个()括号

时间:2018-03-07 07:08:41

标签: javascript regex

技术高手,

我正在研究一种计算器,对正则表达式不太满意。我需要的是JavaScript正则表达式来验证是否存在两个()括号,括号内可能有一些字符。

建议

2 个答案:

答案 0 :(得分:0)

简单的正则表达式:

var string = '1234 + 1234 (5)';
if (string.match('\(|\)')) {
    console.log('() found')
}

答案 1 :(得分:0)

简单匹配

\(.*\)
如果开头和右括号都存在,

将匹配。 (圆括号需要转义,因为它是正则表达式中的特殊字符。).*匹配任何内容,包括空字符串。

但我认为你也想要允许没有任何括号的字符串。这个正则表达式允许任意数量的括号对(不嵌套)或根本不包括:

^[^()]*(?:\([^()]*\)[^()]*)*$

匹配字符串的开头 ^,一个包含括号[^()]*的任意长度的字符串。然后任意数量的组合1.打开P(arentheses)2。任何长度的字符串没有P' s。 3.结束P. 4.任何长度的字符串没有P' s。 (可能重复任何次数。)最后它匹配字符串的结尾 $

工作示例(在输入控件中键入表达式,然后按Enter。):



var inputExpression = document.getElementById("expression");

function testExpression(){
    console.log(inputExpression.value.match(/^[^()]*(?:\([^()]*\)[^()]*)*$/) ? "Well formed" : "Unbalanced parentheses");
//    inputExpression.value = '';
}


inputExpression.addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode === 13) {
        testExpression();
    }
});

Enter an expression:<input id="expression" type="text" onBlur="testExpression()"/>
&#13;
&#13;
&#13;