是否可以建立条件式,在不需要时不检查字串的部分? 例如: 正则表达式:^[a-zA-Z]+.*#[0-9]+$ 范例文字:feature: My name is Oliver #9123 我想当文正: release: My name is oliver 相同的正则表达式匹配两种情况,不需要#9123作为版本前缀,这可能吗? 我试过使用一些正则表达式的条件,我发现在谷歌,但没有成功。
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"))
)
3条答案
按热度按时间ax6ht2ek1#
您需要的是一个可选组:
因此,以下字符串将匹配:
而这不会:
Regex playground
pod7payv2#
您可以在regexp中尝试逻辑OR(
|
):093gszye3#
如果我理解你的意思,你想让正则表达式对整个字符串的一部分起作用,那么你可以创建一个函数,把字符串分成两部分--被正则表达式检查的部分和不被检查的部分--然后你可以把字符串的一部分传递给正则表达式。