Reg-ex有不同的符号

时间:2014-05-15 10:57:56

标签: regex

我使用以下reg-ex,它工作得很好,但唯一的问题是 你不能混合像

这样的符号
aaa-bbbb\ccc

它总是应该有相同的sperator

喜欢aaa-bbb-cccc

"^(?:(?:-?[A-z0-9]+)*|(?:_?[A-z0-9]+)*|(?:\/?[A-z0-9]+/?)*)\s*$"

如何更改?

应该

hyphen ‘-‘,
Underscore ‘_’
Slash ‘/’

2 个答案:

答案 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组字母数字字符。

这是你正在寻找的吗?