Java 如何使用正则表达式匹配仅包含字母数字字符、破折号和下划线的字符串
全部: 我想做的是使用正则表达式匹配一个只允许[a-Za-z0-9_-]的字符串,格式应该是: 仅从[A-Za-z0-9]开始,然后是[A-Za-z0-9_-]。中间可能存在[--],但如果存在,则只允许一次(既可以存在,也可以存在,但每个都只有一次机会),以[-ZA-Z0-9]结束。 我只知道如何匹配字母数字字符、破折号和下划线,但不知道如何限制它们的出现时间Java 如何使用正则表达式匹配仅包含字母数字字符、破折号和下划线的字符串,java,regex,Java,Regex,全部: 我想做的是使用正则表达式匹配一个只允许[a-Za-z0-9_-]的字符串,格式应该是: 仅从[A-Za-z0-9]开始,然后是[A-Za-z0-9_-]。中间可能存在[--],但如果存在,则只允许一次(既可以存在,也可以存在,但每个都只有一次机会),以[-ZA-Z0-9]结束。 我只知道如何匹配字母数字字符、破折号和下划线,但不知道如何限制它们的出现时间 谢谢您可以使用负前瞻: ^(?!.*(-[^-]*-|_[^_]*_))[A-Za-z0-9][\w-]*[A-Za-z0-9]$
谢谢您可以使用负前瞻:
^(?!.*(-[^-]*-|_[^_]*_))[A-Za-z0-9][\w-]*[A-Za-z0-9]$
说明:
-行开始^
-负向前看,这意味着如果前面有两个下划线或两个连字符,则匹配失败(?!*([^-]*-|[^.]*.])
-匹配1个字母数字字符[A-Za-z0-9]
-匹配0个或多个[\w-]*
字符[A-Za-z0-9.-]
-匹配行结束$
foo-bar_-baz
匹配。有多个输入[^-]*
也匹配\n
。投票!这是惊人的,但你能给我一点更多的细节,如何神秘的消极前瞻部分的工作?我想这应该是我首先想到的。