【发布时间】:2017-10-01 17:08:19
【问题描述】:
我正在为以下正则表达式苦苦挣扎:
\b[\dBb][-. \dEe]+(\d{4})\b
它应该匹配帐号,但不能匹配令牌/生日或带有“be”的文本。 在community 的支持下,我设法捕获了第一部分。但是,我似乎无法排除令牌/生日。
应该匹配的大小写(我的正则表达式工作正常):
1234 1234 1234 1234
1234 1234 1234 1234 1
BE12 1234 1234 1234
1234-1234-1234-1234
1234.1234.1234.1234
1234123412341234
12341234 1234 1234
1234-1234-1234-1234-1
1234.1234.1234.1234.1
12341234123412341
12341 234 1234 12341
BE12-1234-1234-1234
be12-1234-1234 1234
Be12.1234.1234-1234
BE12123412341234
不应匹配的情况(我的正则表达式对其中一些情况不正确):
123456
Token: 123456
I shall be awesome in Belgium, as my birthdate is 01/01/2000.
01.01.2000
01012000
first of january 2000
您能帮忙解决这个挑战吗? 谢谢!
【问题讨论】:
-
哇,太棒了!您可以提交您的回复作为答案,以便我接受吗?
-
等等,如果您需要在更大的文本中匹配这些字符串,那将无法正常工作。另外,有效字符串是否应该以 4 位数字结尾(正如您的模式所暗示的那样)?
-
文本将始终是最多 256 个字符的字符串,可能有换行符。需要匹配的字符串确实总是以4位数字结尾。
-
抱歉,如果您需要从较大的字符串中提取这些字符串,我认为没有办法过滤掉不需要的匹配项。
01012000令牌类似于您预期的12341234 1234 1234匹配的第一部分。你怎么能分辨出一个和另一个? -
此条件但不是令牌/生日或带有“be”的文本与您的正则表达式相矛盾。
标签: javascript regex