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

标签 javascript regex

我需要创建一个正则表达式(在 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}$/

如果管道位于括号内,则它与该位置的“日”或“周”匹配。如果管道不在括号内,它会匹配表达式的前半部分(即“类(class)###日”)或表达式的后半部分(即“周###”)。

此外,如果您只是想验证字符串是否与模式匹配,您可以使用“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/

相关文章:

javascript - 如何包装一些元素形成同一个父元素?

javascript - 为什么组合构造函数/原型(prototype)模式返回 typeof 是对象?

javascript - 如何在 Json 中发送 HTML 格式的数据

javascript - 从数组中获取最后单击项目的值

asp.net - 正则表达式在后台 url 标记中查找值

javascript - 在 Javascript 中验证(澳大利亚)电话号码

python - 斯坦福自然语言处理 : How to get chunks

php - 选择包含非 ASCII 字符的行

javascript - 如何在另一个 mixins 函数中使用 mixins 函数?

c# - 在 visual studio 2012 中查找所有注释行