XSD强制允许使用特殊字符的模式LASTNAME / FIRSTNAME

时间:2014-10-07 13:07:04

标签: xsd special-characters

我需要强制执行模式LASTNAME / FIRSTNAME像Smith / John这样的东西。

字符可以是字母数字(小写/大写)还包括特殊字符,如ë等。

模式:

 <xsd:pattern value="[a-zA-Z0-9]/[a-zA-Z0-9]"/>

基本上是规则 - 斜线前的任何东西 - 斜线后的任何东西 - 不应允许“/ John”,“John /”之类的模式 - 有效名称:“Gçéâêôéâê123/Gçéâêôéâê13”但不是“/Gçéâêôéâê123”或“Gçéâêôéâê123/”或“/”

提前致谢。

2 个答案:

答案 0 :(得分:1)

Unicode解决方案

以下正则表达式将与您的请求相匹配,包括"Gçéâêôéâê123/Gçéâêôéâê13"

<xs:pattern value="[\p{L}\p{P}\p{N}]+/[\p{L}\p{P}\p{N}]+"/>

<强>解释

  • \ p {L}匹配一个字母
  • \ p {P}匹配标点符号(拾取你的撇号 请求)
  • \ p {N}匹配数字
  • [...]+匹配其中包含的一个或多个字符。
  • /匹配自己

潜在问题:多个/ s:

由于\p{P}与标点字符(包括您的分隔符/)相匹配,您可能最好直接添加'而不是标点符号类别的一部分:

<xs:pattern value="[\p{L}\p{N}']+/[\p{L}\p{N}']+"/>

答案 1 :(得分:0)

我尝试使用以下模式:

 <xsd:pattern value="\w+/\w+"/>

直到现在的测试结果看起来还不错。