我需要一个字符串的正则表达式 以字母开头(无数字) 最大长度8 没有特殊字符或空格。 string可以有数字或_除了起始字符。
答案 0 :(得分:2)
这样可行:
/^[a-z][a-z0-9_]{0,7}$/i
例如,
/^[a-z][a-z0-9_]{0,7}$/i.test('a1234567'); // true
/^[a-z][a-z0-9_]{0,7}$/i.test('01234567'); // false
答案 1 :(得分:2)
\w
简写适用于所有字母,数字和下划线。 [A-Za-z]
有点矫枉过正,/i
标记会为您提供所有字母,不区分大小写。
因此,您需要的超级简单正则表达式是:
/^[a-z]\w{0,7}$/i
/^[a-z]\w{0,7}$/i.test("a1234567");
> true
/^[a-z]\w{0,7}$/i.test("a12345697");
> false
/^[a-z]\w{0,7}$/i.test("01234567");
> false
答案 2 :(得分:1)
试试这个:
/^[A-Za-z]{1}[a-zA-Z0-9_]{0,7}$/
答案 3 :(得分:1)
试试这个:
/^[a-zA-Z][0-9a-zA-Z_]{0,7}$/
这需要一个alpha开头字符,并且可选地允许最多7个字符,这些字符是字母数字或下划线。
编辑:谢谢,杰西的纠正。
答案 4 :(得分:0)
另一个带前瞻的版本:)
if (subject.match(/^(?=[a-z]\w{0,7}$)/i)) {
// Successful match
}
说明:
"^" + // Assert position at the beginning of the string
"(?=" + // Assert that the regex below can be matched, starting at this position (positive lookahead)
"[a-z]" + // Match a single character in the range between “a” and “z”
"\\w" + // Match a single character that is a “word character” (letters, digits, etc.)
"{0,7}" + // Between zero and 7 times, as many times as possible, giving back as needed (greedy)
"$" + // Assert position at the end of the string (or before the line break at the end of the string, if any)
")"