在中文輸入中,不可避免地會出現各種特殊符號,如全形括弧、中文句號、中文逗號等等。在進行輸入限制或檢驗時,我們經常需要用到正則來判斷和操作這些特殊符號。
一、正則判斷特殊字元英文括弧
在正則表達式中,小括弧 ()、中括弧 [] 和大括弧 {} 都是特殊字元,需要進行轉義。但是英文括弧 () 並不需要進行轉義,因為它們並不是特殊字元。在匹配英文括弧時,只需要在正則表達式中直接寫上即可。
const str = "(abc)";
const reg = /\(abc\)/;
console.log(reg.test(str)); // true
二、正則怎麼匹配到各種特殊符號
匹配中文特殊符號需要使用 Unicode 碼點。對於常見的中文特殊符號,可以通過 Unicode 碼點進行匹配。例如全形括弧的 Unicode 碼點是 65288 和 65289,可以通過以下正則進行匹配:
const str = "(abc)";
const reg = /[\uFF08\uFF09]/; // 匹配全形括弧
console.log(reg.test(str)); // true
三、正則特殊符號的表示
在正則表達式中,一些特殊的符號需要特殊的轉義表示。下面列出一些常見的特殊符號以及它們的轉義表示:
- . :匹配除換行符 \n 以外的任意字元,需要使用 \. 進行轉義。
- \ :反斜杠本身也是特殊字元,需要使用 \\ 進行轉義。
- * :匹配前面的表達式零次或多次,需要使用 \* 進行轉義。
- + :匹配前面的表達式一次或多次,需要使用 \+ 進行轉義。
- ? :匹配前面的表達式零次或一次,需要使用 \? 進行轉義。
- | :或操作符,需要使用 \| 進行轉義。
- () :匹配括弧內的表達式,並且記憶匹配結果,需要使用 \( 和 \) 進行轉義。
四、正則限制特殊符號的輸入
在需要限制特殊符號輸入的場景下,可以使用以下正則,只允許輸入中文、數字和常見的中文標點符號(不包含全形括弧和引號):
const reg = /^[\u4e00-\u9fa5a-zA-Z0-9·。,,!!::;;「」『』??、·]+$/;
五、正則去除特殊符號
在需要去除特殊符號的場景下,可以使用以下正則,把所有非中文、數字和常見中文標點符號的字元都替換為空字元串:
const reg = /[^\u4e00-\u9fa5a-zA-Z0-9·。,,!!::;;「」『』??、·]/g;
const str = "abc 123(中文)";
console.log(str.replace(reg, "")); // abc123中文
六、正則匹配特殊符號
在需要匹配特殊符號的場景下,可以使用相關的 Unicode 碼點或者直接在正則表達式中寫上特殊字元:
const str = "中文(!)";
const reg1 = /[\uFF01]/; // 匹配中文感嘆號
const reg2 = /[!]/; // 直接寫上字元也行
console.log(reg1.test(str)); // true
console.log(reg2.test(str)); // true
七、正則不允許特殊符號
在需要保證不含特殊符號的場景下,可以使用以下正則,只允許輸入中文、字母、數字和下劃線:
const reg = /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/;
八、js正則特殊符號
在使用 JavaScript 中的正則表達式時,需要注意一些特殊符號的轉義問題。在 JavaScript 中反斜杠同樣是轉義符號,需要使用連續兩個反斜杠來表示
const str = "abc(123)";
const reg = /\(123\)/;
console.log(reg.test(str)); // true
九、js正則匹配特殊符號
在使用 JavaScript 中的正則表達式時,可以直接在正則表達式中寫上特殊字元,而不需要使用 Unicode 碼點進行匹配:
const str = "中文!";
const reg = /!/; // 直接寫上字元也行
console.log(reg.test(str)); // true
十、js正則不能輸入特殊符號
在使用 JavaScript 中的正則表達式時,可以通過在輸入框的 onkeydown 事件中阻止輸入特殊符號來實現輸入限制:
const input = document.querySelector("#input");
input.onkeydown = function(e) {
const keyCode = e.keyCode || e.which || e.charCode;
const reg = /^[0-9a-zA-Z\u4e00-\u9fa5\s]+$/; // 允許輸入數字、字母、中文和空格
// 判斷是否是特殊符號
if (!reg.test(String.fromCharCode(keyCode)) && keyCode !== 8 && keyCode !== 46) {
e.preventDefault(); // 阻止默認事件
}
};
以上是幾個與正則判斷中文特殊符號相關的小標題,希望能對大家在日常開發中的正則應用有所幫助。
原創文章,作者:ONUBC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370124.html