Javascript RegEx to XML Schema RegEx

Javascript RegEx to XML Schema RegEx

本文关键字:RegEx Schema XML to Javascript      更新时间:2023-09-26

我有这个Javascript模式

^('b[A-Z]'w*('s|'.)*)+$

我试着在我的XML架构上使用它

<xs:pattern value="^('b[A-Z][a-z]*('s|'.)*)+$">

但当我验证时,我收到一个错误,说InvalidRegex:Pattern值"^(''b[A-Z][A-Z](''s|.))+$"不是有效的正则表达式。报告的错误为:"当前选项设置中不支持此表达式。"

有没有一种方法可以让我的Javascript模式处理我的XMLSchema模式?

并非总是可以将JS正则表达式转换为XSD正则表达式,如Michael Kay回答中所述,XSD正则表达式中不支持单词边界、lookahead等。

根据您的另一个问题,您需要一个正则表达式来测试所有单词是否以大写字符开头,您可以编写另一个对XSD有效的正则表达式,比如这个正则表达式,它测试一个(或多个)空格或点后的下一个字符不应该是小写字母。

([^'s'.]*(['s'.]+[^a-z])?)*['s'.]*

首先,XSD正则表达式隐式锚定在字符串的末尾,因此您可以(也必须)省略"^"answers"$"。

更困难的问题是''b。在方括号外,Javascript中的''b匹配"单词边界",即ASCII字母和数字序列与非(ASCII字母和位数)序列之间的边界。

仔细看,除了确保字符串中至少有一个字符外,我看不出''b对正则表达式的实际贡献。据我所见,您的正则表达式可以简化为

[A-Za-z's'.]+