gpt4 book ai didi

javascript正则表达式回顾

转载 作者:行者123 更新时间:2023-11-29 21:32:50 25 4
gpt4 key购买 nike

我正在使用正则表达式

^\d{1,2}\.\d{1,3}(\([a-z]\))?(\(\d\))?$ 

匹配 (a)(6),(b)(4) 这样的值这很好用。但我需要测试 (a) 是否为真,但 (3) 应该返回 false。我想要类似的东西

^\d{1,2}\.\d{1,3}(\([a-z]\))?(?(-1)\(\d\))?$ 

我在某处读到 javascript 不支持 lookbehind。我需要匹配一个模式如下。

  • 23.456 -> 真
  • 23.346(f) -> 正确
  • 23.378(5) -> 错误
  • 23.214(b)(7) -> 正确

提前感谢您的帮助。

最佳答案

我认为这样的事情可能对你有用:

^\d{1,2}[.]\d{1,3}([(][a-z][)]([(][0-9][)])?)?$

请注意,我更喜欢 [.] 语法而不是默认的转义\. 语法。

图例 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/>');
}

关于javascript正则表达式回顾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35702159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com