ฉันสงสัยว่าถ้าฉันจะได้รับการแสดงออกปกติซึ่งจะตรงกับสตริงที่มีเพียงตัวอักษรและที่อยู่คนเดียว
à
ตัวอักษรตามคำนิยามของคุณหรือไม่ คุณใช้ภาษาอะไร
ฉันสงสัยว่าถ้าฉันจะได้รับการแสดงออกปกติซึ่งจะตรงกับสตริงที่มีเพียงตัวอักษรและที่อยู่คนเดียว
à
ตัวอักษรตามคำนิยามของคุณหรือไม่ คุณใช้ภาษาอะไร
คำตอบ:
คุณสามารถใช้ตัวแปร 2 ตัวต่อไปนี้:
/^[A-Z]+$/i
/^[A-Za-z]+$/
เพื่อจับคู่สตริงอินพุตของตัวอักษร ASCII
[A-Za-z]
จะตรงกับตัวอักษรทั้งหมด (ทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่)^
และ$
จะทำให้แน่ใจว่าไม่มีอะไรนอกจากตัวอักษรเหล่านี้จะถูกจับคู่รหัส:
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
เอาท์พุท:
array(0) {
}
กรณีทดสอบสำหรับความคิดเห็นของ OP ว่าเขาต้องการจับคู่เฉพาะในกรณีที่มีตัวอักษร 1 ตัวขึ้นไปในอินพุต ในขณะที่คุณสามารถมองเห็นในกรณีทดสอบที่ตรงกับความล้มเหลวเพราะมีในสายป้อน^
abcAbc^Xyz
หมายเหตุ:โปรดทราบว่าคำตอบข้างต้นตรงกับตัวอักษร ASCII เท่านั้นและไม่ตรงกับอักขระ Unicode หากคุณต้องการจับคู่ตัวอักษร Unicode ให้ใช้:
/^\p{L}+$/u
ที่นี่\p{L}
ตรงกับตัวอักษรทุกชนิดจากภาษาใด ๆ
\w is shorthand for A-Za-z
- ไม่จริง\w
เป็นชวเลขสำหรับ[a-zA-Z0-9_]
หากคุณต้องการรวมอักขระที่ไม่ใช่ตัวอักษร ASCII และถ้ารสชาติ regex ของคุณรองรับ Unicode
\A\pL+\z
จะเป็น regex ที่ถูกต้อง
เอ็นจิน regex บางตัวไม่รองรับไวยากรณ์ Unicode นี้ แต่อนุญาตให้\w
ตัวอักษรและตัวเลขสั้น ๆ จับคู่อักขระที่ไม่ใช่ ASCII ในกรณีนี้คุณสามารถรับตัวอักษรทั้งหมดโดยการลบตัวเลขและขีดล่างออกจาก\w
แบบนี้:
\A[^\W\d_]+\z
\A
จับคู่ที่จุดเริ่มต้นของสตริง\z
ที่ส่วนท้ายของสตริง ( ^
และ$
ตรงกับที่จุดเริ่มต้น / สิ้นสุดของบรรทัดในบางภาษาเช่น Ruby หรือหากมีการตั้งค่าตัวเลือก regex บางอย่าง)
สิ่งนี้จะจับคู่อักขระที่มีตัวอักษรอย่างน้อยหนึ่งตัว:
/^[a-z]+$/
คุณสามารถทำให้ตัวพิมพ์เล็กและใหญ่ตายได้โดยใช้:
/^[a-z]+$/i
หรือ:
/^[a-zA-Z]+$/
ใน Ruby และภาษาอื่น ๆ ที่สนับสนุนคลาสอักขระ POSIX ในนิพจน์วงเล็บเหลี่ยมคุณสามารถทำได้ง่ายๆ:
/\A[[:alpha:]]+\z/i
ที่จะตรงกับตัวอักษรในทุกภาษาตัวอักษร Unicode peasy ง่าย ๆ
ข้อมูลเพิ่มเติม: http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html
[^[:alpha]]
การใช้งาน