Can';t完成regexp

Can';t完成regexp,regex,Regex,我正在尝试构建regexp,以便在mmorpg游戏中查找有效名称。规则如下: 必须至少包含4个字符 不能超过24个字符 可能包含字符A-Z、A-Z、0-9和单引号。(公司名称也可以包括减号和点字符。) 名称中的第一个或最后一个字符不允许使用空格或单引号 这是我到目前为止得到的 /([A-z0-9]{1}[A-z0-9]{3,23}[A-z0-9]{1})$/ 问题是我不能在{3,23}部分中插入零个或一个引号以及零个或多个空格。任何提示?您可以使用此正则表达式: /^[A-Za-z0-9](?

我正在尝试构建regexp,以便在mmorpg游戏中查找有效名称。规则如下:

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

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

    问题是我不能在{3,23}部分中插入零个或一个引号以及零个或多个空格。任何提示?

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

    /^[A-Za-z0-9](?!([^']*'){2})[ A-Za-z0-9'.-]{2,22}[A-Za-z0-9]$/
    
    顺便说一句,
    [A-z]
    [A-Za-z]
    不同,因为从
    A
    z
    的范围将允许更多字符


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

    /^[A-Za-z0-9](?!([^']*'){2})[ A-Za-z0-9'.-]{2,22}[A-Za-z0-9]$/
    
    顺便说一句,
    [A-z]
    [A-Za-z]
    不同,因为从
    A
    z
    的范围将允许更多字符

    我建议用这个正则表达式

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

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

    (?![']|.[']$)
    防止在开头和结尾使用空格和撇号

    [A-Za-z0-9.-]+$
    允许字母数字、撇号(先前的展望已经限制为1)、破折号、点和空格(任何数字)。

    我建议使用这个正则表达式

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

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

    (?![']|.[']$)
    防止在开头和结尾使用空格和撇号



    [A-Za-z0-9'.-]+$
    允许字母数字、撇号(先前的前瞻已将其限制为1)、破折号、点和空格(任意数字)。

    您现在可以使用条件语句来完成,哈哈哈!但愿我能帮忙,我对正则表达式的了解非常有限,尽管我发现它是一种非常有用的语言!“”如果希望程序运行更快、维护更方便,请将每一条规则作为单独的验证方法实现,并尽量避免使用正则表达式!使用单独规则的额外好处是,您可以准确地告诉用户他们选择的名称有什么问题。@如果我强烈反对,这正是正则表达式应该解决的问题。那么空格呢?他们可以接近字符限制吗?你现在可以用条件语句完成了哈哈哈!但愿我能帮忙,我对正则表达式的了解非常有限,尽管我发现它是一种非常有用的语言!“”如果希望程序运行更快、维护更方便,请将每一条规则作为单独的验证方法实现,并尽量避免使用正则表达式!使用单独规则的额外好处是,您可以准确地告诉用户他们选择的名称有什么问题。@如果我强烈反对,这正是正则表达式应该解决的问题。那么空格呢?“他们能接近角色极限吗?”阿努巴瓦很抱歉回答得太晚了。实际上,您的regexp不能捕获“零个或多个空格”。尝试添加多个,您将看到。P.S.订购的要求很模糊,是的。但我清楚地说,零个或一个引号和零个或多个空格。你在我的演示中看到第三个输入了吗?它是
    名称姓氏
    ,只允许一个空格。在同一个演示中,你会看到一个输入
    名称姓氏
    ,有两个空格,但不匹配。@anubhava抱歉,我似乎没有跟上你。我需要0-N个空格和0-1个单引号。您的regexp在阻止多个引号时不允许多个空格。设置名称“Jesus Mary Joseph”应该是合法的。好吧,我想你应该只允许1个空格。我刚刚编辑了它,现在允许N个空格。@anubhava很抱歉回答晚了。实际上,您的regexp不能捕获“零个或多个空格”。尝试添加多个,您将看到。P.S.订购的要求很模糊,是的。但我清楚地说,零个或一个引号和零个或多个空格。你在我的演示中看到第三个输入了吗?它是
    名称姓氏
    ,只允许一个空格。在同一个演示中,你会看到一个输入
    名称姓氏
    ,有两个空格,但不匹配。@anubhava抱歉,我似乎没有跟上你。我需要0-N个空格和0-1个单引号。您的regexp在阻止多个引号时不允许多个空格。设置名称“Jesus Mary Joseph”应该是合法的。好吧,我想你应该只允许1个空格。我刚刚编辑了它,现在允许N个空格。效果很好!谢谢,另外感谢您对此的解释。:)@roflomglol另一个答案在开始或结束时不接受dot,而我的答案符合要求,这很好!谢谢,另外感谢您对此的解释。:)@roflomglol另一个答案在开头或结尾不接受dot,而我的答案按要求接受dot