2012-11-03 20 views
11

tôi có regex sau đó chỉ cho phép bảng chữ cái:javascript regex tương đương/[a-zA-Z] +/sử dụng p {L}

 /[a-zA-Z]+/ 

    a = "abcDF" 
    if (a.match(/[a-zA-Z]+/) == a){ 
     //Match 
    }else{ 
     //No Match 
    } 

Làm thế nào tôi có thể làm điều này bằng p {L} (phổ quát - bất kỳ ngôn ngữ như Đức, Anh vv ..)

gì tôi đã cố gắng:

a.match(/[p{l}]+/) 
    a.match(/[\p{l}]+/) 
    a.match(/p{l}/) 
    a.match(/\p{l}/) 

nhưng tất cả trở lại null cho bức thư a = "ab"

+0

cập nhật câu hỏi – user1767962

Trả lời

12

Bắt đầu với ECMAScript 2018, JavaScript cuối cùng cũng hỗ trợ Unicode property escapes.

Đối với các phiên bản cũ hơn, bạn cần tự xác định tất cả các phạm vi Unicode có liên quan. Hoặc bạn có thể sử dụng Steven Levithan của XRegExp package with Unicode add-ons và sử dụng các phím tắt hữu Unicode của nó:

var regex = new XRegExp("^\\p{L}*$") 
var a = "abcäöüéèê" 
if (regex.test(a)) { 
    // Match 
} else { 
    // No Match 
} 
+0

Tôi không có vấn đề sử dụng gói, nhưng chỉ nói, là nó bắt buộc phải sử dụng gói để kiểm tra languageslike khác nhau Đức, Tiếng Anh vv .. – user1767962

+0

ai đó nói với tôi rằng \ w phù hợp với bất kỳ ngôn ngữ nào, có đúng không? – user1767962

+0

'\ w' chỉ khớp với chữ cái/chữ số ASCII/gạch dưới trong JavaScript. Không có cách nào dễ dàng xung quanh XRegExp nếu bạn muốn hỗ trợ Unicode. –

5

Nếu bạn sẵn sàng để sử dụng Babel để xây dựng javascript của bạn sau đó có một babel-plugin tôi đã phát hành mà sẽ biến đổi biểu thức thông thường như /^\p{L}+$/ hoặc /\p{^White_Space}/ thành cụm từ thông dụng mà trình duyệt sẽ hiểu.

Đây là trang dự án: https://github.com/danielberndt/babel-plugin-utf-8-regex

Các vấn đề liên quan