如何验证第二个字符不是“*”?

时间:2012-03-28 23:58:22

标签: regex

我一直在构建这个正则表达式并且它变得越来越复杂。

^(?=.{2,})[a-zA-Z0-9\s\-\,\.]+\*?$

基本上我用它验证名字。但现在我需要确保它至少有2个字符,但前两个字符不是“*”。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

你可以改变你的前瞻,寻找除星星之外的任何角色。

^(?=[^*]{2})

答案 1 :(得分:1)

你现在拥有的是这个

^(?=.{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,}[*]?)$/

第一个字符中没有允许*。

如果你不想在第二个角色中使用*,你可以做什么 马克在前瞻中暗示了否定阶级,或者你可以做到这一点 没有预见。

^[a-zA-Z0-9\s,.-]{2,}[*]?$

答案 2 :(得分:1)

我不确定我是否理解这个问题,但是

^[^*][^*]

只会匹配前两个字符都不是*的字符串。这与ab匹配,但不匹配a**b**

如果要求是字符串不以**开头,那么只使用内置于您使用的任何语言的字符串操作操作可能既简单又快捷。例如。在python:

len(name) >= 2 and not name.startswith('**')

或者在C:

strlen(name) >= 2 && !(name[0] == '*' && name[1] == '*')