gpt4 book ai didi

javascript - 如何使用 RegEx 查找同时包含数字和字母的括号,而不仅仅是一个或另一个

转载 作者:行者123 更新时间:2023-12-05 09:27:20 25 4
gpt4 key购买 nike

在这个例子中...

(5) (dogs)  (5 dogs)  (dogs 5)

我只想匹配到...

(5 dogs)  -or-  (dogs 5)

数字可以是任意位数,包含逗号、小数点、数学运算符、美元符号等。我唯一需要注意的是同时存在数字和字母字符。

我从对 example provided by hrs 的修改开始将其用于正则表达式...

\(((letter).*(number))\)|((number).*(letter))\)

只捕获这个...

(number letter)  -or-  (letter number)

但不是...

(number) (letter)

通过修改表达式为...

\(((^[a-zA-Z]).*(^[0-9]))\)|((^[0-9]).*(^[a-zA-Z]))\)

...但显然我不知道自己在做什么。

最佳答案

您可以使用前瞻性断言每组括号内都有一个数字和一个字母:

\((?=[^)\d]*\d)(?=[^)a-z]*[a-z])[^)]+\)

这两个先行断言有一些非右括号字符,然后是一个数字(第一个先行 (?=[^)\d]*\d))或一个字母 (第二个前瞻 (?=[^)a-z]*[a-z]))。 [^)]+ 然后匹配 () 之间的字符。

Demo on regex101

在 JavaScript 中:

const str = '(5) (dogs)  (5 dogs)  (dogs 5)'
const regex = /\((?=[^)\d]*\d)(?=[^)a-z]*[a-z])[^)]+\)/ig

console.log(str.match(regex))

关于javascript - 如何使用 RegEx 查找同时包含数字和字母的括号,而不仅仅是一个或另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72554360/

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