匹配带下划线,小写ASCII字母,ASCII数字,连字符或点的字符串,不以点和连字符开头

时间:2016-09-07 11:11:02

标签: javascript regex validation

我需要正则表达式,它可以匹配像这样的字符串

_test
123test
test
test_123
test-123
123.a

我创建了这个正则表达式:

/^[_0-9a-z][_.\-a-z0-9]*$/

但是,如果字符串只包含数字,我想排除它。

我该如何解决?

1 个答案:

答案 0 :(得分:3)

为避免匹配仅限数字的字符串,请添加否定前瞻:

^(?![0-9]+$)[_0-9a-z][_.\-a-z0-9]*$
 ^^^^^^^^^^

(?![0-9]+$)预测仅在字符串的开头触发一次,并尝试匹配一个或多个数字直到字符串的结尾。如果找到它们,匹配将失败(不会返回匹配),因为前瞻是否定