我正在使用正则表达式
for (var i = 0; i < dayOneIconTokyo.length; i++){
if ( weatherConditions.indexOf(dayOneIconTokyo[i]) ){
console.log('working');
} else{
console.log('not in the array');
}
}
匹配像(a)(6),(b)(4)这样的值 这很好用。但我需要测试(a)为真,但只是(3)应该返回false。 我想要像
这样的东西BigDecimal res = ResultSet.getBigDecimal();
我在某处读到javascript不支持lookbehind。 我需要匹配一个模式如下。
感谢您的帮助。
答案 0 :(得分:1)
你需要这个正则表达式:
\([a-z]\)(\(\d\))?$
(a)(3)
- true (a)
- true (3)
- false 答案 1 :(得分:1)
我认为这样的事情对你有用:
^\d{1,2}[.]\d{1,3}([(][a-z][)]([(][0-9][)])?)?$
请注意,我更喜欢[.]
语法,而不是默认的转义\.
。
Legenda Online Demo
^\d{1,2}[.]\d{1,3} # this may be also [\d.] if you don't care about structure
( # START GROUP 1
[(][a-z][)] # A lowercase letter inside round bracket
( # START GROUP 2
[(]\d[)] # A digit inside round bracket
)? # END GROUP 2: make it optional
)? # END GROUP 1: make it optional
$ # End of the string
现场演示
// Add /i at bottom to make the regex it case insensitive
var re = /^\d{1,2}[.]\d{1,3}([(][a-z][)]([(][0-9][)])?)?$/;
var tests = ['23.456','23.346(f)','23.378(5)','23.214(b)(7)'].reverse();
var m;
while( t = tests.pop() ) {
document.write('"' + t + '"<br/>');
document.write('Valid? ' + ( (t.match(re)) ? '<font color="green">YES</font>' : '<font color="red">NO</font>') + '<br/><br/>');
}
&#13;