如何匹配字符串的结尾而不是加号

时间:2017-11-21 08:34:16

标签: javascript node.js regex

我有一个正则表达式如下:

 if (string.match(/([0-9]+\-[0-9]+)\s*\,?\s*([0-9]+\-[0-9]+)\s*(mon|tues|wed|thu|fri|sat|sun)/ig)) {
    string = string.replace(/([0-9]+\-[0-9]+)\s*\,?\s*([0-9]+\-[0-9]+)\s*(mon|tues|wed|thu|fri|sat|sun)/ig, "$3 $1 , $3 $2")
}

以捕捉以下模式:

1- 8-20 15-19 sat,

2- 8-10 14-18 tues

3- 8-15 18-20 fri metro

但不是这些情况: " 8-10 14-20 tues + fri + sat-fr"或" 8-10 14-20 tues + fri"

有人能帮助我吗? 感谢

1 个答案:

答案 0 :(得分:3)

使用此正则表达式:https://regex101.com/r/yiDfKz/6/

([0-9]+\-[0-9]+)\s*\,?\s*([0-9]+\-[0-9]+)\s*(mon|tues|wed|thu|fri|sat|sun)([^+]|$)

([^+]|$) ==>除了+字符或结束(需要多行标记)

或此正则表达式:https://regex101.com/r/yiDfKz/4/

([0-9]+\-[0-9]+)\s*\,?\s*([0-9]+\-[0-9]+)\s*(mon|tues|wed|thu|fri|sat|sun)([, ]|$)

([, ]|$) ==>逗号,斜杠或结束(需要多行标记)

或最后这个更紧凑的正则表达式:https://regex101.com/r/yiDfKz/7

(\d+-\d+)\s*,?\s*(\d+-\d+)\s*(mon|tues|wed|thu|fri|sat|sun)(?!\+)

使用否定前瞻(?!\+)并使用[0-9]代替\ d`