2015-12-21 22 views
2

能(以下示爲)具有Unicode轉義序列語法,Unicode代碼點逸出在正則表達式的文字 - 的Javascript

var regpat= /^[\u0041-\u005A\u0061-\u007A\.\' \-]{2,15}/;

使用Unicode代碼點逃逸語法編寫此正則表達式文字語法?

var regpat= /^[\u{41}-\u{5A}\u{61}-\u{7A}\u{1F4A9}\.\' \-]{2,15}/;

注:Unicode代碼點逸出用來簡化ES5兼容代理對語法表示代碼點值超過FFFF

+0

'返回 「」 .match(/ \∪{1d306}/U)[0]。長度=== 2;'測試對於支撐 –

回答

3

是,根據the spec現在這是一個有效的轉義序列,但是爲了實現支持,您必須在Regex定義中包含新的標誌

var regpat = /^[\u{41}-\u{5A}\u{61}-\u{7A}\u{1F4A9}\.\' \-]{2,15}/u; 
console.log(regpat.test("\u{41}\u{61}}")) 

Babel REPL

+0

'語法錯誤:無效的正則表達式標誌u'上*火狐45.0a2 *和* chrome 47.0 * – overexchange

+0

@proxchange您可以檢查瀏覽器實現的狀態[此處](https://kangax.github.io/compat-table/es6/#test-RegExp_y_and_u_flags)。 Babel轉換正則表達式,因此可能是目前唯一可行的選項 – CodingIntrigue

+0

請注意,當您處理單獨的替代項時,轉譯的正則表達式可能無法正確運行。 – nhahtdh