2012-08-29 59 views
1

这可能很简单,但我不怎么做。正则表达式javascript中的问号

我有这样的正则表达式:

new RegExp("^[A-Za-z\\u00C0-\\u017F][\\- ]?+$"); 

它验证一个名字。名字必须以一个字母开始(范围是unicode并且工作正常),然后继续使用字母或空格。但它可以只是字母,就像大多数名字一样。

我已经搜查,但我没有发现这样做的正确方法。

我不想重复字符范围。这只是让代码更“适当”。

如果你能帮助,它会提前

+0

你的表情说:“一个字母,然后任选任何一个破折号或一个空间”,那么如果我理解正确的话,'+'是错误的语法,虽然JavaScript是经常宽容,所以......也许文字上的'+'? –

+1

如果你想要写一个'(?:快|清洁|正确|高效)'正则表达式,阅读(学习):精通正则表达式(第3版(http://www.amazon.com/Mastering-Regular -Expressions - 杰弗里 - 弗里德尔/ DP/1565922573),当谈到学习正则表达式,没有捷径可走。 – ridgerunner

+0

谢谢ridgerunner – Emilie

回答

4

是巨大的:)

感谢现在你只允许一个字母,然后一个或多个破折号/空间。你可能想要

new RegExp("^[A-Za-z\\u00C0-\\u017F][A-Za-z\\u00C0-\\u017F -]*$"); 

但一般来说,试图用正则表达式验证名称是不是这样一个好主意。

+0

确实如此,但我不想重复字符范围,它只是有。代码更“正确” – Emilie

+0

@ user1550752:但它不是复制 - 第二个不同于第一,除非你还想允许破折号或空格在名称的开头,还有周围没有办法 –

+0

。是的,我知道,并且它对你的解决方案的效果很好,事实是我想用“?”来使用最简洁的正则表达式,我知道有最简单的方法,但我只想看看是否有可能使用“?” 。 – Emilie