Tôi chỉ muốn cho phép các chữ cái, số, không gian, unerscore và dấu gạch nối.
Cho đến nay tôi nghĩ rằng preg_match này sẽ thực hiện công việc:
if[preg_match['/[^a-z0-9 _]+$/i', $name]] {
$error = "Name may only contain letters, numbers, spaces, \"_\" and \"-\".";
}
Nhưng tôi chỉ nhận ra rằng các ký tự đặc biệt bên trong một chuỗi, sẽ không tạo ra lỗi. Ví dụ
Xin chào "@£ $ Joe
sẽ không tạo ra một lỗi. Có thể tạo ra một chút thay đổi và làm cho nó hoạt động, hoặc tôi cần một giải pháp khác?
hỏi ngày 16 tháng 4 năm 2012 lúc 7:50Apr 16, 2012 at 7:50
2by2by2by
1.0335 huy hiệu vàng22 Huy hiệu bạc39 Huy hiệu đồng5 gold badges22 silver badges39 bronze badges
Vấn đề là với biểu tượng $
. Bạn đặc biệt yêu cầu nó phù hợp với phần cuối của chuỗi. Biểu thức /[^a-z0-9 _]+$/i
sẽ không khớp với
if[preg_match['/[^a-z0-9 _]+/i', $name]] {
// preg_match will return true if it finds
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
0 vì if[preg_match['/[^a-z0-9 _]+/i', $name]] {
// preg_match will return true if it finds
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
1 khớp với if[preg_match['/[^a-z0-9 _]+/i', $name]] {
// preg_match will return true if it finds
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
2; Vì vậy, nó rõ ràng sẽ không phù hợp khi bạn phủ nhận lớp học. Xóa biểu tượng $
và mọi thứ sẽ như mong đợi:if[preg_match['/[^a-z0-9 _]+/i', $name]] {
// preg_match will return true if it finds
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
Kiểm tra nó trong trình duyệt của bạn bằng cách dán từng dòng này một trong bảng điều khiển JavaScript:
/[^a-z0-9 _]+/i.test["@hello"]; // true
/[^a-z0-9 _]+/i.test["joe@"]; // true
/[^a-z0-9 _]+/i.test["hello\"@£$joe"]; // true
/[^a-z0-9 _]+/i.test["hello joe"]; // false
Đã trả lời ngày 16 tháng 4 năm 2012 lúc 9:15Apr 16, 2012 at 9:15
Salman Asalman aSalman A
252K80 Huy hiệu vàng423 Huy hiệu bạc513 Huy hiệu Đồng80 gold badges423 silver badges513 bronze badges
0
Bạn cần mang theo
if[preg_match['/[^a-z0-9 _]+/i', $name]] {
// preg_match will return true if it finds
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
4 bên ngoài lớp ký tự:if[preg_match['/^[a-z0-9 _]+$/i', $name]] {
Một
if[preg_match['/[^a-z0-9 _]+/i', $name]] {
// preg_match will return true if it finds
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
4 bên trong [lúc đầu] Một lớp ký tự hoạt động giống như một trình phủ định lớp ký tự.Đã trả lời ngày 16 tháng 4 năm 2012 lúc 7:53Apr 16, 2012 at 7:53
CodaddictCodaddictcodaddict
435K80 Huy hiệu vàng487 Huy hiệu bạc524 Huy hiệu đồng80 gold badges487 silver badges524 bronze badges
0
/^[[a-z]|[A-Z]|[0-9]| |_|-]+$/
Sử dụng biểu thức chính quy này
Thiefmaster
303K78 Huy hiệu vàng582 Huy hiệu bạc625 Huy hiệu Đồng78 gold badges582 silver badges625 bronze badges
Đã trả lời ngày 16 tháng 4 năm 2012 lúc 7:55Apr 16, 2012 at 7:55
Vipin Jainvipin JainVipin Jain
1.3421 Huy hiệu vàng9 Huy hiệu bạc19 Huy hiệu đồng1 gold badge9 silver badges19 bronze badges
1
Ở đây lấy cái này:
/^[a-z0-9\s\-_]+$/i
Biểu thức này được tôi kiểm tra với dữ liệu giả.
Untitled Document
function valueanalysis[form]{
var vals = form.vals.value;
alert[/^[a-z0-9\s\-_]+$/i.test[vals]];
return false;
}
Sử dụng mã này trong tệp HTML Kiểm tra xác thực bằng cách điền vào giá trị và nhấn enter sau đó để kiểm tra xem có đúng hay không.
Lưu ý:- Biểu thức chính quy giống nhau cho tất cả các ngôn ngữ. regular expressions are same for all languages.
Đã trả lời ngày 16 tháng 4 năm 2012 lúc 8:43Apr 16, 2012 at 8:43
Vipin Jainvipin JainVipin Jain
1.3421 Huy hiệu vàng9 Huy hiệu bạc19 Huy hiệu đồng1 gold badge9 silver badges19 bronze badges
4