正規表達式 Regular Expression 去除標點符號 symbol

今天公司遇到一個 issue 需要判斷留言的內文是否超過 30 個字,其中需要過濾標點符號,於是找了許多文章終於讓我用一個簡短的程式完成碼

正規表達式

正規表示式使用單個字串來描述、符合一系列符合某個句法規則的字串。在很多文字編輯器裡,正則運算式通常被用來檢索、替換那些符合某個模式的文字。

程式碼 enjoy:

1
2
3
$reply = '中文-english-12345';
$rule = '/[\x{4e00}-\x{9fa5}|\w]/u';
$return = preg_match_all($rule, $reply, $matches, PREG_OFFSET_CAPTURE);

  • 變數 $rule 中的 \x{4e00}-\x{9fa5} 代表繁體、簡體中文的 Unicode 碼,| 表示 or,\w 表示英文跟數字,最後面的 u 表示可以使用 Unicode,不然會噴錯誤,只要符合簡體繁體英文字數字 都會計算此字符。
  • 變數 $return 表示 preg_match_all 函數回傳值為int資料型態的過濾標點符號的字符數量。

使用 Laravel tinker result
regular expression result

參考

https://zhidao.baidu.com/question/198972264254572845.html

https://www.2cto.com/kf/201206/135171.html

http://nathanmint.pixnet.net/blog/post/154247435-%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E6%B3%95%28regexp%29-%E4%B8%AD%E6%96%87%E3%80%81%E8%8B%B1%E6%96%87%E5%AD%97%E6%AF%8D%E3%80%81%E6%95%B8%E5%AD%97%E3%80%81%E7%89%B9

http://php.net/manual/en/function.preg-match.php

https://atedev.wordpress.com/2007/11/23/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F-regular-expression/

Contents
  1. 1. 正規表達式
  2. 2. 參考
|