我正在尝试验证需要使用正则表达式的xsd中的字符串。该字符串将采用以下形式......
JOE〜PETE〜SAM〜BOB
以下内容被视为有效......
JOE
~PETE
JOE~SAM~
~~~BOB
JOE~PETE~~
另外,〜之间的每个名称最多只能是6个字符(或数字),最多只能有4个名字。
我现在正在尝试的正则表达式是......
[0-9A-ZA-Z] {0,6} [〜] {0,1} | [0-9A-ZA-Z] {0,6} [〜] {1} [0-9A -Za-Z] {0,4} [〜] {0,1}
但我想知道他们是否是更好的解决方案。
注意:我应该进一步澄清......如果只允许4个名字,那意味着最多只允许3个。波浪号表示位置,因此如果发生了~~~ BOB,则表示位置1,2和3为空,第4位被BOB占用。另外,如果你有JOE ~~~,JOE位于第一个位置,其余为空。零个或多个名称可以位于4个位置中的任何一个。此外,允许使用。,*,空格等符号。
答案 0 :(得分:1)
这个怎么样?
^(~*\b[0-9a-zA-Z]{1,6}\b~*){0,4}$
假设名称之间,之前和之后~
的数量没有限制。
\b
转义序列与单词之间的“边框”匹配 - 即任何字母数字和任何非字母数字字符之间的空格。
此外,专业提示:\w
转义序列与[0-9a-zA-Z]
匹配的内容相同。上述正则表达式可以缩短为:
^(~*\b\w{1,6}\b~*){0,4}$
答案 1 :(得分:1)
我认为这就是你所得到的
^[^~]{0,6}(~[^~]{0,6}){0,3}$
答案 2 :(得分:0)
空字符串是否有效?那些仅由波浪形组成的弦乐呢?如果是这样,以下内容将起作用:
^([0-9a-zA-Z]{0,6}~?){0,4}$