我需要一个字符串的正则表达式

时间:2011-11-02 17:16:54

标签: javascript regex

我需要一个字符串的正则表达式 以字母开头(无数字) 最大长度8 没有特殊字符或空格。 string可以有数字或_除了起始字符。

5 个答案:

答案 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)
")"