2017-04-07 25 views
2

在我的xsd模式中,有一個特定的正則表達式<xs:pattern value="(?!TR)[A-Z]{2}"/>模式導致錯誤。我只想忽略'TR'並匹配所有其他國家代碼。雖然正則表達式中的幾個在線編輯器工作正常時,Eclipse說:排除expressin'?!'無法驗證

InvalidRegex:模式價值 '(TR?!)[A-Z] {2}' 不是有效的正則表達式。報告的錯誤是:'當前選項設置不支持此表達式。'

儘管這是一個簡單的表達式,但無法弄清楚爲什麼它不能被驗證。有了這個錯誤,我無法將xsd文件部署到服務總線。是否有關於aclipse本身或其他問題?

所有建議都非常感謝!

it works as desired

+0

[正則表達式的Javascript XML模式正則表達式(http://stackoverflow.com/questions/37131767/javascript-regex-to-xml-schema-regex)的可能的複製 – user5226582

回答

1

XML Schema regex flavor不支持lookarounds。您正則表達式的非環視版本

[A-SU-Z][A-Z]|[A-Z][A-QS-Z] 

或者使用character class subtraction

[A-Z-[T]][A-Z]|[A-Z][A-Z-[R]] 

regex demo

只要注意我在演示只是因爲用香精中^$是PCRE那裏。在XSD pattern中,默認情況下錨定正則表達式,不需要^$

圖案的詳細資料

  • [A-SU-Z](或[AZ-[T]])- any uppercase ASCII letter other than T`
  • [A-Z] - 任何大寫字母ASCII
  • | - 或
  • [A-Z] - 任何大寫ASCII字母
  • [A-QS-Z](或[A-Z-[R]] ) - 比其他任何大寫ASCII字母R