我试图防止点字符'。'的重复。并且只允许数字/字母
例如
"blah...blah".matches(rex)) //false
"..blablah".matches(rex)) //false
"blablah..".matches(rex)) //false
"blab.lah".matches(rex)) //true
"bla.blah".matches(rex)) //true
我尝试使用:
^(?!\.\.)([a-zA-Z0-9._\-]*)$
但它仅适用于第二个示例,如何使它起作用?
最佳答案
您已经很接近了,您需要将前瞻调整为(?!.*\\.{2})
,所以整个正则表达式为^(?!.*\\.{2})([a-zA-Z0-9._\-]*)$
。请注意,与.matches()
一起使用时不需要锚,因为它会尝试匹配整个字符串。
如果您不希望任何非字母/数字连续重复,可以使用(?!.*([._-])\\1+)
进行查找。
关于java - 如何使用Java正则表达式防止字符重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40450064/