Javascript正则表达式到XML模式正则表达式

Javascript正则表达式到XML模式正则表达式,javascript,xml,xsd,Javascript,Xml,Xsd,我有这个Javascript模式 ^(\b[A-Z]\w*(\s|\.)*)+$ 我尝试在XML模式中使用它 <xs:pattern value="^(\b[A-Z][a-z]*(\s|\.)*)+$"> 但是当我验证时,我收到一个错误,说InvalidRegex:Pattern value'^(\b[A-Z][A-Z](\s|”)+$”不是有效的正则表达式。报告的错误是:“当前选项设置不支持此表达式”。 有没有办法让我的Javascript模式处理我的XML模式模式?首先,

我有这个Javascript模式

^(\b[A-Z]\w*(\s|\.)*)+$
我尝试在XML模式中使用它

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

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


有没有办法让我的Javascript模式处理我的XML模式模式?

首先,XSD正则表达式隐式地锚定在字符串的末尾,因此您可以(而且必须)省略“^”和“$”两个字符

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

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

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

并非总是可以将JS正则表达式转换为XSD正则表达式,XSD正则表达式中不支持诸如word boundary、lookaheads等内容,如中所述

基于,您可以编写另一个对XSD有效的正则表达式,例如此正则表达式,用于测试在一个(或多个)空格或点之后,以下字符不应是小写字母

([^\s\.]*([\s\.]+[^a-z])?)*[\s\.]*
据介绍,它不支持“^”和$anchors。