Regex -基于文本第一部分的条件

ecfsfe2w  于 2022-12-05  发布在  其他
关注(0)|答案(3)|浏览(171)

是否可以建立条件式,在不需要时不检查字串的部分?
例如:
正则表达式:^[a-zA-Z]+.*#[0-9]+$
范例文字:feature: My name is Oliver #9123
我想当文正:
release: My name is oliver
相同的正则表达式匹配两种情况,不需要#9123作为版本前缀,这可能吗?
我试过使用一些正则表达式的条件,我发现在谷歌,但没有成功。

ax6ht2ek

ax6ht2ek1#

您需要的是一个可选组:

^[a-zA-Z\s]+(#[0-9]+)?$

因此,以下字符串将匹配:

"My name is Oliver #9123"
"My name is Oliver"

而这不会:

"This is not valid #xxx"

Regex playground

pod7payv

pod7payv2#

您可以在regexp中尝试逻辑OR(|):

const tests=["My name is Oliver #9123",
             "release: My name is oliver",
             "this should fail",
             "#12345 another fail"];

tests.forEach(str=>
  console.log(str+" - "+(str.match(/^release|[a-zA-Z]+.*#[0-9]+/)?"pass":"fail"))
)
093gszye

093gszye3#

如果我理解你的意思,你想让正则表达式对整个字符串的一部分起作用,那么你可以创建一个函数,把字符串分成两部分--被正则表达式检查的部分和不被检查的部分--然后你可以把字符串的一部分传递给正则表达式。

相关问题