【发布时间】:2021-02-11 21:59:07
【问题描述】:
这个测试的规则是:
- 必须包含字母和数字
- 可能在字符串中的任何位置包含这些特殊字符:
Number sign (#)
Minus (-)
Full stop (.)
Slash (/)
Space ( )
- 可能不包含任何其他特殊字符
- 可能不仅由字母组成
- 可能不仅由字母和/或特殊字符组成
- 可能不仅由数字组成
- 可能不仅包含数字和/或特殊字符
- 数字、字母和特殊字符可以是任意顺序
所需匹配的示例:
445b
apt 445a
Apt. #445
Apt 445
Apt-445
Apt - 445
apt445
apt#445
apt/445
APT-445a
APT - 445c
Apt# 445b
Apt. #445-c
22 Elm St.
不匹配示例:
apt four forty five
Elm St.
Elm St
Elm Street
445
445 445
445-445
#445
(any or all of the special characters by themselves)
41686d6564's 下面的答案非常接近,但在我原来的问题中,我没有指定空格是特殊字符的一部分:
/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9\-#\.\/]+$/
我自己尝试过加入空格特殊字符,但没有得到想要的结果。
查看实时示例。 Live Example
【问题讨论】:
-
抱歉,但是必须是字母和数字的混合字符和可能包含这些括号内显示的特殊字符是矛盾的。所以,第一个要求可以划掉,对吧?接下来,字符串可能以特殊字符开头,那么字符串的结尾呢?
-
如果字母和数字都必须存在(即使使用了特殊字符),并且如果特殊字符可以出现在任何地方(您没有另外说明),您可以使用
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9\-#.\/]+$(@ 987654323@)。如果这不是你需要的,你应该edit这个问题并澄清规则。
标签: javascript regex street-address