gpt4 book ai didi

javascript - 如何在 Javascript 正则表达式中匹配整个句子?

转载 作者:行者123 更新时间:2023-11-29 20:25:49 26 4
gpt4 key购买 nike

我需要创建一个匹配特定句子结构的正则表达式(在 Javascript 中)。在我的例子中,它是“Course ### day ###”,其中 ### 可以是任何 1 到 3 位数字。此外,它可以是“周”而不是“天”,因此“类(class)### 周###”也是有效的。

到目前为止,我已经想出了:

var regTest=/^(Course) \d{1,3} (day)|(week) \d{1,3}$/

问题是这个表达式匹配“Course 9 day 1”,这是我想要的,但它也会匹配“Course 9 day 1 scheduled on 07/01/09”。

换句话说,以下返回值 0:

"Course 9 day 1".search(regTest)

但是这个也返回0:

"Course 9 day 1 scheduled on 07/01/09".search(regTest)

我希望第一个测试返回 0,但我希望第二个测试返回 -1。我需要表达式只匹配到 ### 接下来的一天/一周。你如何让它在那个时候停下来?

最佳答案

您需要将 OR(竖线)移到日和周之间的括号中:

/^(Course) \d{1,3} (day|week) \d{1,3}$/

如果竖线在括号内,则它匹配该位置的“day”或“week”。由于管道不在括号内,它匹配表达式的前半部分(即“Course ### day”)或表达式的后半部分(即“week ###”)。

此外,如果您只是想验证字符串是否与模式匹配,您可以使用“test”而不是“search”:

if(/^(Course) \d{1,3} (day|week) \d{1,3}$/.test(someString)) {
// it matches!
}

关于javascript - 如何在 Javascript 正则表达式中匹配整个句子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1186259/

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