我使用以下reg-ex,它工作得很好,但唯一的问题是 你不能混合像
这样的符号aaa-bbbb\ccc
它总是应该有相同的sperator
喜欢aaa-bbb-cccc
"^(?:(?:-?[A-z0-9]+)*|(?:_?[A-z0-9]+)*|(?:\/?[A-z0-9]+/?)*)\s*$"
如何更改?
值应该
hyphen ‘-‘,
Underscore ‘_’
Slash ‘/’
答案 0 :(得分:2)
为确保符号始终相同,应使用反向引用,例如
aaa[_/-]bbb\1ccc
^^
\1
必须是[_/-]
你也在使用[A-z]
几乎肯定不会做你认为的事情,大写字母A和小写字母z之间的字符是:
ABCD...XYZ[\]^_`abcd...xyz
您可能需要[A-Za-z]
答案 1 :(得分:2)
首先,A-z
会给你太宽的范围。在ASCII(和Unicode)中,大写' Z'之间有字符。小写' a'这不是字母或数字。您可以将正则表达式转义序列\w
用于单词字符或A-Za-z
。两者都是等价的。
此外,看起来你知道你总是有三个部分,所以懒惰的指标是不必要的。
[A-Za-z\d]+([-_\\/])[A-Za-z\d]+\1[A-Za-z\d]+\s*
这将确保您具有相同的分隔符,可以是连字符,斜杠或下划线。无论分隔符是什么,它都会分隔3组字母数字字符。
这是你正在寻找的吗?