Javascript 将字符串与下划线、小写ASCII字母、ASCII数字、连字符或点匹配(仅以点和连字符开头)

Javascript 将字符串与下划线、小写ASCII字母、ASCII数字、连字符或点匹配(仅以点和连字符开头),javascript,regex,validation,Javascript,Regex,Validation,我需要正则表达式,它可以匹配这样的字符串 _test 123test test test_123 test-123 123.a 我创建了这个正则表达式: /^[_0-9a-z][_.\-a-z0-9]*$/ 但是,如果字符串只包含数字,我想将其排除在外 如何修复它?要避免匹配仅限数字的字符串,请添加负前瞻: ^(?![0-9]+$)[_0-9a-z][_.\-a-z0-9]*$ ^^^^^^^^^^ (?![0-9]+$)前瞻仅在字符串开头触发一次,并将尝试匹配字符串末尾的一个或多个数字

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

_test
123test
test
test_123
test-123
123.a
我创建了这个正则表达式:

/^[_0-9a-z][_.\-a-z0-9]*$/
但是,如果字符串只包含数字,我想将其排除在外


如何修复它?

要避免匹配仅限数字的字符串,请添加负前瞻:

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

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

您使用的是哪种语言?注意,在Ruby中,要匹配字符串的开头和结尾,需要
\A
(开始)和
\z
(结束)锚定。