无法完成正则表达式

时间:2014-07-04 14:02:06

标签: regex

我正在尝试构建regexp以在mmorpg游戏中查找有效名称。这是规则:

  1. 必须至少有4个字符。
  2. 不能超过24个字符。
  3. 可以包含字符A-Z,a-z,0-9和单引号。 (公司名称也可能包括减号和点字符。)
  4. 不允许使用空格或单引号字符作为名称中的第一个或最后一个字符。
  5. 这是我到目前为止所得到的。

    /([A-z0-9]{1}[A-z0-9]{3,23}[A-z0-9]{1})$/
    

    问题是我无法在{3,23}部分中插入零或一个引号和零个或多个空格。有什么提示吗?

2 个答案:

答案 0 :(得分:5)

您可以使用此正则表达式:

/^[A-Za-z0-9](?!([^']*'){2})[ A-Za-z0-9'.-]{2,22}[A-Za-z0-9]$/

btw [A-z][A-Za-z]不同,因为从Az的范围将允许更多字符。

Online regex Demo

答案 1 :(得分:0)

我建议这个正则表达式

^(?=.{4,24}$)(?=[^']*'?[^']*$)(?![ ']|.*[ ']$)[A-Za-z0-9'. -]+$

(?=.{4,24}$)用于字符限制

(?=[^']*'?[^']*$)用于可选的一个撇号字符(注意"'更多地称为引号字符。

(?![ ']|.*[ ']$)可以防止开头和结尾的空格和撇号。

[A-Za-z0-9'. -]+$允许使用字母数字,撇号(早期前瞻限制为1),破折号,点数和空格(任意数字)。'