我需要一個正則運算式來只允許我之前設定的maxLength 的大寫擴展 ASCII 字符,它是單詞的最大長度。
大寫字母的正則運算式:\P{Ll} *
擴展 ASCII 字母的正則運算式:[\x00-\xFF] *
使用 ^[\p{Ll}] 這還不夠,因為我需要將字符擴展為 ASCII(不允許表情符號或其他特殊字符超出 ASCII 擴展的范圍)。
我怎樣才能結合這兩個要求?和maxLength 的長度。
謝謝!!
uj5u.com熱心網友回復:
一般來說,你可以使用
^(?:(?=\p{Lu})\p{Latin}){1,10}$
請參閱正則運算式演示。詳情:
^- 字串的開始(?:- 非捕獲組的開始:(?=\p{Lu})\p{Latin}- 來自LatinUnicode 類別類的一個大寫字母字符
){1,10}- 小組結束,重復一到十次$- 字串的結尾。
由于您在 DevExpress 屏蔽輸入組件中使用正則運算式,因此您需要在字符類中列舉所有這些字母。基于正則運算式拉丁字符過濾器和非拉丁字符過濾器,您需要
拉丁語-1 補充
U 0080 - U 00FF
拉丁語擴展-AU 0100 - U 017F
拉丁語擴展-BU 0180 - U 024F
這三個范圍內的所有大寫字母都是您要允許的字符:
var res = []
for (var i=128; i<=591; i ) { // Get chars from \u0080 to \u024F
if (/^\p{Lu}$/u.test(String.fromCharCode(i))) { // If it is an uppercase letter
res.push(String.fromCharCode(i)); // Add it to the results
}
}
console.log(res.join(""))
代碼看起來像
settings.MaskExpression = "[\\u00C0-\\u00D6\\u00D8-\\u00DE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E]{1,10}";
該\u...部分匹配àá??????èéê?ìí??D?òó????ùú?üYTā????????ē???ě???????ī???????????????ō??????????????ū?????????????????????????????????????????????????ǎǐǒǔǖǘǚǜ????????????????????????????????????????????????????????集合中的任何字母。
該{1,10}限制量詞匹配一到十的發生。您可以進一步調整。
uj5u.com熱心網友回復:
對@Wiktor 的評論稍作修改,我認為更容易閱讀:
^[^\P{Lu}\P{Latin}]{0,10}$
應該匹配最多 10 個大寫拉丁(包括擴展)字符的字串。使用否定階級找到10個字符未未大寫也沒有拉丁文。它確實匹配了像?????????.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/399395.html
標籤:正则表达式
上一篇:從正則運算式組中排除一些字符
