Regex 如何验证第二个字符不是*&引用;?
我一直在构建这个正则表达式,它变得越来越复杂Regex 如何验证第二个字符不是*&引用;?,regex,Regex,我一直在构建这个正则表达式,它变得越来越复杂 ^(?=.{2,})[a-zA-Z0-9\s\-\,\.]+\*?$ 基本上我用它来验证名字。但现在我需要确保它至少有2个字符,但前两个不是“*” 有什么想法吗?你可以改变你的前瞻性,寻找除星星以外的任何角色 ^(?=[^*]{2}) 您可以更改前瞻以查找除星星以外的任何角色 ^(?=[^*]{2}) 你现在拥有的是这个 ^(?=.{2,})[a-zA-Z0-9\s\-\,\.]+\*?$ or ^[a-zA-Z0-9\s,.-](?:[*
^(?=.{2,})[a-zA-Z0-9\s\-\,\.]+\*?$
基本上我用它来验证名字。但现在我需要确保它至少有2个字符,但前两个不是“*”
有什么想法吗?你可以改变你的前瞻性,寻找除星星以外的任何角色
^(?=[^*]{2})
您可以更改前瞻以查找除星星以外的任何角色
^(?=[^*]{2})
你现在拥有的是这个
^(?=.{2,})[a-zA-Z0-9\s\-\,\.]+\*?$
or
^[a-zA-Z0-9\s,.-](?:[*]|[a-zA-Z0-9\s,.-]+[*]?)$
or
/^[a-zA-Z0-9\s,.-][*]$/ || /^[a-zA-Z0-9\s,.-]{2,}[*]?)$/
不允许在第一个字符中使用*
如果您不想在第二个字符中也使用*,您可以执行以下操作Mark建议在前瞻中使用否定类,或者您可以这样做
没有前瞻性
^[a-zA-Z0-9\s,.-]{2,}[*]?$
你现在拥有的是这个
^(?=.{2,})[a-zA-Z0-9\s\-\,\.]+\*?$
or
^[a-zA-Z0-9\s,.-](?:[*]|[a-zA-Z0-9\s,.-]+[*]?)$
or
/^[a-zA-Z0-9\s,.-][*]$/ || /^[a-zA-Z0-9\s,.-]{2,}[*]?)$/
不允许在第一个字符中使用*
如果您不想在第二个字符中也使用*,您可以执行以下操作Mark建议在前瞻中使用否定类,或者您可以这样做
没有前瞻性
^[a-zA-Z0-9\s,.-]{2,}[*]?$
我不确定我是否正确理解了这个问题,但是
^[^*][^*]
仅匹配前两个字符都不是*
的字符串。这与ab
匹配,但与a*
、*b
或**
不匹配
如果要求字符串不以**
开头,那么只使用内置于您所使用的任何语言中的字符串操作可能会更简单、更快。例如,在python中:
len(name) >= 2 and not name.startswith('**')
或在C中:
strlen(name) >= 2 && !(name[0] == '*' && name[1] == '*')
我不确定我是否正确理解了这个问题,但是
^[^*][^*]
仅匹配前两个字符都不是*
的字符串。这与ab
匹配,但与a*
、*b
或**
不匹配
如果要求字符串不以**
开头,那么只使用内置于您所使用的任何语言中的字符串操作可能会更简单、更快。例如,在python中:
len(name) >= 2 and not name.startswith('**')
或在C中:
strlen(name) >= 2 && !(name[0] == '*' && name[1] == '*')
前两个字符不是“*”
-这是否意味着前两个字符都不能是*
?或者其中一个可以是,但不能两者都是?在正则表达式中,第一个字符永远不能是星形,因为第一个字符必须在[a-zA-Z0-9\s,.-]
中。您到底想要什么?前两个字符不是“*”
-这是否意味着前两个字符都不能是*
?或者其中一个可以是,但不能两者都是?在正则表达式中,第一个字符永远不能是星形,因为第一个字符必须在[a-zA-Z0-9\s,.-]
中。你到底想要什么?