javascript正则表达式

时间:2016-02-29 14:32:19

标签: javascript regex

我正在使用正则表达式

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。 我需要匹配一个模式如下。

  • 23.456 - &gt;是的
  • 23.346(f) - &gt;真
  • 23.378(5) - &gt;假
  • 23.214(b)(7) - &gt;真

感谢您的帮助。

2 个答案:

答案 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

现场演示

&#13;
&#13;
// 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;
&#13;
&#13;