2015-11-02 27 views
2

我是XML-Schema-to-JSON-Schema編譯器/變換器的作者。最近一位用戶詢問是否可以在JSON模式中支持xs:pattern是與JavaScript/ECMAScript正則表達式兼容的XML模式正則表達式嗎?

JSON Schema支持regular expressions所以理論上這應該是可能的。

但是,這假定XML Schema的正則表達式語法和語義與JavaScript/ECMAScript的正則表達式語法和語義兼容。因爲如果他們不是,我可能將無法解析和翻譯一個正則表達式方言到另一個沒有很多努力。

我離不開這兩種規格的透徹分析回答這個問題:

所以我想問:

是XML與JavaScript/ECMAScript正則表達式兼容的架構正則表達式?

具體而言,我可以使用JavaScript中的XML Schema的有效正則表達式(通過RegExp或類似的方法)嗎?

我讀過的XML Schema正則表達式相當有限,所以希望它們能夠在更強大的環境中工作,但是我很難說這裏是否是這種情況。

我將在這裏假設XML Schema 1.0和ECMAScript 5.1。

+1

它們不兼容。在XML Shema中,您可以使用Unicode類別類,並且不能在JS(ES5,當前實現)中使用它們。此外,JS正則表達式不支持字符類減法。另外,'\ w','\ d'和'\ s'簡寫類可以匹配Unicode符號,而在ES5中它們不會。 ES5不支持'\ i','\ l','\ c','\ C'「多字符轉義」。 –

+0

@stribizhev請您將此作爲答案發布? – lexicore

回答

2

ES5和XML模式正則表達式語法不兼容。

在XML Shema中,您可以使用Unicode類別類(稱爲category escapes),並且不能在JavaScript ES5中使用它們。

此外,在JavaScript正則表達式中不支持character class subtraction

另外,\w,\d\s速記類可以匹配Unicode符號,而在ES5中它們不會。在ES5中也不支持\i,\l,\c,\C"multi-character escapes"

+1

此外,「。」在XML Schema中匹配任何Unicode字符(包括星號字符),而在ES5中匹配代理對的一半。這在ES6的Unicode正則表達式中有所變化。還有其他一些細微差別,如\ d的含義。 –