Javascript regex以捕获组开始
我使用此正则表达式来匹配以下模式:Javascript regex以捕获组开始,javascript,regex,pattern-matching,Javascript,Regex,Pattern Matching,我使用此正则表达式来匹配以下模式: /(((fall|spring|summer)\s\d{4});|(waived)|(sub\s[a-zA-Z]\d{3}))/ig 应匹配: fall 2000; spring 2019; waived summer 1982; sub T676 不应匹配任何不以第一个捕获组开头的字符串((秋季|春季|夏季)\s\d{4}),例如: waived Fall 2014; sub Fall 2011; waived 确保每个匹配模式都从该组开始((秋季|春
/(((fall|spring|summer)\s\d{4});|(waived)|(sub\s[a-zA-Z]\d{3}))/ig
应匹配:
fall 2000;
spring 2019; waived
summer 1982; sub T676
不应匹配任何不以第一个捕获组开头的字符串((秋季|春季|夏季)\s\d{4})
,例如:
waived Fall 2014;
sub Fall 2011; waived
确保每个匹配模式都从该组开始((秋季|春季|夏季)\s\d{4})
我试着像这样在第一组前面加上^
,/(^((秋季|春季|夏季);(放弃)|(sub\s[a-zA-Z]\d{3}))/ig
,但结果不一致
您可以使用
/^(fall|spring|summer)\s\d{4};(?:.*(waived|sub\s[a-zA-Z]\d{3}))?/i
看
详细信息
-字符串的开头^
-三种选择之一(秋季|春季|夏季)
-空白\s
-4位数字\d{4}
代码>-分号
-以下可选序列:(?:.*(放弃| sub\s[a-zA-Z]\d{3}))?
-尽可能多的0+字符,而不是换行符(如果需要的值更接近字符串的开头,请替换为惰性的*
对应项)*?
-分组构造的开始(
-a放弃
子字符串放弃
-或|
-asub
substringsub
-子字符串\s
-一个ASCII字母[a-zA-Z]
-三位数字\d{3}
-分组构造结束)
\s{1}
在功能上与\s
相同,但有些人更喜欢更直观的表达。我不喜欢它,但它对读者强调的正是一个,所以它做了一些事情。这是否是件好事还存在争议,但我不会为此责怪任何人。你有什么特别的理由将^
包含在括号内吗?