我正在嘗試撰寫一個僅匹配阿拉伯語和英語字母的正則運算式(不允許使用數字和特殊字符)空格。這個正則運算式作業正常,但允許字串中間的數字
/[\u0620-\u064A\040a-zA-Z] $/
例如,它匹配假設不匹配的 (??111111?)。問題是有沒有辦法不匹配字母中間的數字。
uj5u.com熱心網友回復:
請注意,在 JavaScript 中,您必須使用具有 Unicode 類別類支持的 ECMAScript 2018 :
const texts = ['????? ?????','week week','hunāka','??111111?'];
const re = /^(?:(?=[\p{Script=Arabic}A-Za-z])\p{L}|\s) $/u;
for (const text of texts) {
console.log(text, '=>', re.test(text))
}
該^(?:(?=[\p{Script=Arabic}A-Za-z])\p{L}|\s) $方法
^- 字串的開始(?:- 非捕獲組容器的啟動:(?=[\p{Script=Arabic}A-Za-z])- 正向前瞻,需要阿拉伯文字中的字符或 ASCII 字母立即出現在當前位置的右側\p{L}- 任何 Unicode 字母(注意\p{Alphabetic}包括更多的“字母”字符,您可能想嘗試一下)|- 或者\s- 空白
)- 重復一次或多次$- 字串的結尾。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/358686.html
標籤:javascript 正则表达式
