【发布时间】:2015-08-11 06:13:35
【问题描述】:
我有 js 和一个不同的字符串,像这样:
Tue Aug 11 2015 between 4:00 PM and 5:00 PM
字词between 和and 未更改
但有时我可以得到这个字符串,单词之间有不同数量的空格
Tue Aug 11 2015 between 4:00 PM and 5:00 PM (3 spaces)
或
Tue Aug 11 2015 between 4:00 PM and 5:00 PM (1 spaces)
是否可以为这个字符串创建一个正则表达式?
string re1="((?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|Tues|Thur|Thurs|Sun|Mon|Tue|Wed|Thu|Fri|Sat))"; // Day Of Week 1
string re2="(\\s+)"; // White Space 1
string re3="((?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Sept|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?))"; // Month 1
string re4="(\\s+)"; // White Space 2
string re5="((?:(?:[0-2]?\\d{1})|(?:[3][01]{1})))(?![\\d])"; // Day 1
string re6="(\\s+)"; // White Space 3
string re7="((?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3})))(?![\\d])"; // Year 1
string re8="(\\s+)"; // White Space 4
string re9="(\"between\")"; // Double Quote String 1
string re10="(\\s+)"; // White Space 5
string re11="((?:(?:[0-1][0-9])|(?:[2][0-3])|(?:[0-9])):(?:[0-5][0-9])(?::[0-5][0-9])?(?:\\s?(?:am|AM|pm|PM))?)"; // HourMinuteSec 1
string re12="(\\s+)"; // White Space 6
string re13="(\"and\")"; // Double Quote String 2
string re14="(\\s+)"; // White Space 7
string re15="((?:(?:[0-1][0-9])|(?:[2][0-3])|(?:[0-9])):(?:[0-5][0-9])(?::[0-5][0-9])?(?:\\s?(?:am|AM|pm|PM))?)"; // HourMinuteSec 2
如何简化这一行的正则表达式?
【问题讨论】:
-
您可以使用
\s+来表示一个或多个空白字符。 -
问题是什么?你想提取/替换什么?
-
一天,
string re1 = "((?:Tues?|Thu(rs?)?|Sun|Mon|Wed|Fri|Sat))"; // Day Of Week 1 -
你不需要不同的
regex来匹配多个空格,re4 re6 re8 re10 re12 re14可以替换成re2 -
在你使用过这些正则表达式的地方添加完整的代码,这样问题就清楚了
标签: javascript regex date