Tôi đã tự hỏi Nếu tôi có thể có được một biểu thức chính quy sẽ khớp với một chuỗi chỉ có các ký tự chữ cái và chỉ một mình nó.
à
một ký tự chữ cái theo định nghĩa của bạn? Ngôn ngữ của bạn đang sử dụng là gì?
Tôi đã tự hỏi Nếu tôi có thể có được một biểu thức chính quy sẽ khớp với một chuỗi chỉ có các ký tự chữ cái và chỉ một mình nó.
à
một ký tự chữ cái theo định nghĩa của bạn? Ngôn ngữ của bạn đang sử dụng là gì?
Câu trả lời:
Bạn có thể sử dụng bất kỳ 2 biến thể sau:
/^[A-Z]+$/i
/^[A-Za-z]+$/
để khớp với chuỗi đầu vào của bảng chữ cái ASCII.
[A-Za-z]
sẽ khớp với tất cả các bảng chữ cái (cả chữ thường và chữ hoa).^
và $
sẽ đảm bảo rằng không có gì ngoài những bảng chữ cái này sẽ được khớp.Mã số:
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Đầu ra:
array(0) {
}
Trường hợp thử nghiệm là cho nhận xét của OP rằng anh ta chỉ muốn khớp nếu có 1 hoặc nhiều bảng chữ cái có trong đầu vào. Như bạn có thể thấy trong trường hợp kiểm tra khớp không thành công vì có ^
trong chuỗi đầu vào abcAbc^Xyz
.
Lưu ý: Xin lưu ý rằng câu trả lời trên chỉ khớp với bảng chữ cái ASCII và không khớp với các ký tự Unicode. Nếu bạn muốn khớp các chữ cái Unicode thì hãy sử dụng:
/^\p{L}+$/u
Ở đây, \p{L}
phù hợp với bất kỳ loại thư từ bất kỳ ngôn ngữ
\w is shorthand for A-Za-z
- không thực sự, \w
là tốc ký cho[a-zA-Z0-9_]
Nếu bạn cần bao gồm các ký tự chữ cái không phải ASCII và nếu hương vị regex của bạn hỗ trợ Unicode, thì
\A\pL+\z
sẽ là regex chính xác.
Một số công cụ regex không hỗ trợ cú pháp Unicode này nhưng cho phép tốc \w
ký chữ và số cũng khớp với các ký tự không phải ASCII. Trong trường hợp đó, bạn có thể nhận được tất cả các bảng chữ cái bằng cách trừ các chữ số và dấu gạch dưới \w
như thế này:
\A[^\W\d_]+\z
\A
khớp ở đầu chuỗi, \z
ở cuối chuỗi ( ^
và $
cũng khớp ở đầu / cuối dòng trong một số ngôn ngữ như Ruby hoặc nếu một số tùy chọn regex nhất định được đặt).
Điều này sẽ phù hợp với một hoặc nhiều ký tự chữ cái:
/^[a-z]+$/
Bạn có thể làm cho trường hợp không nhạy cảm bằng cách sử dụng:
/^[a-z]+$/i
hoặc là:
/^[a-zA-Z]+$/
Trong Ruby và các ngôn ngữ khác hỗ trợ các lớp ký tự POSIX trong biểu thức ngoặc, bạn có thể thực hiện đơn giản:
/\A[[:alpha:]]+\z/i
Điều đó sẽ phù hợp với ký tự alpha trong tất cả các ngôn ngữ bảng chữ cái Unicode. Dễ như ăn bánh.
Thông tin thêm: http://en.wikipedia.org/wiki/Regular_expression#Character_groupes http://ruby-doc.org/core-2.0/Regapi.html
[^[:alpha]]
.
[a-zA-Z]
nên làm điều đó tốt
Bạn có thể tham khảo bảng cheat .