技术高手,
我正在研究一种计算器,对正则表达式不太满意。我需要的是JavaScript正则表达式来验证是否存在两个()括号,括号内可能有一些字符。
建议
答案 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;