用正則表達式匹配字符串中漢字及中文標點符號

問題:

在寫項目時遇到需要匹配字符串中所有的漢字並且包括簡單的中文標點符號

比如:

匹配下面這個完成的字符串

let str = '上傳文件,你好呀,我很好';

網上能夠查到很多匹配漢字的正則

let reg = /[\u4e00-\u9fa5]+/g;

console.log(str.match(reg));
// 結果如下
['上傳文件', '你好呀', '我很好']

從結果可以看出上面寫的正則沒有匹配到標點符號,,所以將完整的字符串(str)分隔開瞭

又從網上查找匹配中文標點的正則

// 匹配中文標點的正則
\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3010|\u3011|\u007e

// 可以匹配以下中文標點符號(順序是一一對應的)
// `。 ? ! , 、 ; : “ ” ‘ ' ( ) 《 》 【 】 ~`

Ps:

如果上面沒有想要的標點符號,可以上網查找將中文符號轉換成Unicode編碼添加在表達式中即可

將剛才編寫的正則表達式進行下簡單的修改

let reg = /[(\u4e00-\u9fa5)(\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3010|\u3011|\u007e)]+/g

console.log(str.match(reg));
// 打印結果
['上傳文件,你好呀,我很好']

可以看到這次結果是我們想要的形式,整個字符串都匹配到瞭~

補充:

Unicode 編碼並不隻是為某個字符簡單定義瞭一個編碼,而且還將其進行瞭歸類。 

\pP 其中的小寫 p 是 property 的意思,表示 Unicode 屬性,用於 Unicode 正表達式的前綴。 

大寫 P 表示 Unicode 字符集七個字符屬性之一:標點字符。 

其他六個是 

  • L:字母; 
  • M:標記符號(一般不會單獨出現); 
  • Z:分隔符(比如空格、換行等); 
  • S:符號(比如數學符號、貨幣符號等); 
  • N:數字(比如阿拉伯數字、羅馬數字等); 
  • C:其他字符 

總結

到此這篇關於用正則表達式匹配字符串中漢字及中文標點符號的文章就介紹到這瞭,更多相關正則匹配漢字及中文標點符號內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: