正则表达式:仅限字母,数字,空格,连字符,句点和下划线,并且必须以字母开头

时间:2012-11-07 17:32:55

标签: javascript regex keyfilter

经过一些教程之后我觉得我有这个,但是没有---

我只想匹配一串字母,数字,空格,连字符,句号和下划线,并且必须以jquery函数中的字母开头

这是我在教程之后提出的,但它只接受字母:

/^[a-z][a-z0-9_ .-]*?/i

请帮忙!

++ ++ EDITED

这是我尝试使用此代码的代码:

$('input[name=albumName]').keyfilter(/^[a-z][a-z0-9_ .-]*?/i);

用户输入的名称也将在URL中使用,因此我想限制他们的输入。我希望这是允许的(Texas AandM - 2012),但不允许这样做(2012年 - 得克萨斯A& M)

2 个答案:

答案 0 :(得分:1)

你的正则表达式对我来说没问题。也许周围的代码而不是正则表达式存在问题?这是一个Python示例:

s_re = re.compile('^[a-z][a-z0-9_.-]*',re.I) # case insensitive match

In [12]: if s_re.match('A'): print 'match'
match

In [14]: if s_re.match('A.-'): print 'match'
match

In [15]: if s_re.match('1.-'): print 'match'

In [16]: if s_re.match('1_.-'): print 'match'

In [17]: if s_re.match('A_.-'): print 'match'
match

如果您想确保首字母后面至少有一个字符,则可以将*替换为+,或将{2,}替换为至少2个字符,或{2,5},包含2到5个字符。

答案 1 :(得分:1)

^[a-z][a-z0-9_ .-]*有效。

由于问号,正则表达式只匹配字母, 因为匹配是最小的匹配。

Reference/RegExp