2012-02-28 68 views
0

什么是正确的Javascript RegExp验证以下字符串“900 - 09 999” 该字符串应该只允许数字从0到9,连字符和空格。RegExp验证字符串“900 - 09 999”

在此先感谢

+4

这是一种基本的正则表达式技巧,您可以通过阅读几个基本示例并激活正则表达式编辑器来获取这些技能。 http://www.regular-expressions.info/和http://rubular.com/ – pduersteler 2012-02-28 12:51:03

+0

当告诉我们它应该验证什么时,请更精确 - 字符串是否包含引号?连字符是否需要在那里?如果用户丢弃或增加空间会怎么样?如果他们复制并粘贴选项卡而不是某个空间的空间?在开始或结束时允许空格吗?如果它非常接近,但不是确切的,你想重新格式化它吗? – 2012-02-28 13:02:05

回答

1

当你解释你想要你的正则表达式验证什么东西是准确的。空格和连字符是否可选?这件事很重要。无论如何,这验证了严格的格式:

"\d{3} \- \d{2} \d{3}" 

这一个不太严格的一个:如果您使用

"\d{3} ?\-? ?\d{2} ?\d{3}" 
+0

Thx。克劳斯!是的,空格和连字符是可选的。 – Manu 2012-02-28 12:58:03

0

这样的:

inputField.value = inputField.value.replace(/\s*(\d\d\d)\s*-?\s*(\d\d)\s*(\d\d\d)\s*/, "$1 - $2 $3") 

...它应该既松散的验证和重新格式化该值,如果它不完全匹配。

分解,表达执行以下操作:

\s*   # match any amount of whitespace 
(\d\d\d)  # capture three digits 
\s*   # match any amount of whitespace 
-?   # match an optional hyphen 
\s*   # match any amount of whitespace 
(\d\d)  # capture two digits 
\s*   # match any amount of whitespace 
(\d\d\d)  # capture three digits 
\s*   # match any amount of whitespace 
  • match意味着找到了一组表达
  • capture意味着找到匹配匹配的字符,但存储匹配后使用
  • whitespace可以是空格,制表符或回车符
  • any amount可以表示零或mor e
+0

Thx。代码赛马会! – Manu 2012-02-28 13:26:10