iT邦幫忙

0

Regex問題 : 請問 JS 如何刪除之前和之後的非字母中文單字

請問如何刪除之前和之後的非字母中文單字

輸入:

:MySQL 資料庫同步

預期結果 :

MySQL 資料庫同步

我嘗試想法跟做:

-首先使用諸如startwith(non-letter)之類的正則表達式獲取數據,然後使用string.Replace替換為空字符串。
-使用類似 (non-letter)endwith的正則表達式獲取數據,然後也替換為空字符串。

但我不知道如何實現..

另外想詢問大神們都是怎麼看到一堆字串,馬上想到要用甚麼正則抓取解決問題...

dragonH iT邦超人 5 級 ‧ 2020-08-22 20:37:02 檢舉
把你的標題換成白話文拿去 google

正則 非英文中文
移至下方回覆
大神,您好請問可以底下留言嗎,方便標記為最佳解答!

2 個回答

2
最佳解答
^([^a-zA-Z\u4E00-\u9FFF]*)(.*?)([^a-zA-Z\u4E00-\u9FFF]*)$

可以分為三個 Group
第一個和第三個取符號
中間取除此之外的所有字元

replace 可以用 $2 將整段匹配的文字,取代為中間的內容

var regex = /^([^a-zA-Z\u4E00-\u9FFF]*)(.*?)([^a-zA-Z\u4E00-\u9FFF]*)$/gm;
var str = ':MySQL 資料庫同步 ';

var result = str.replace(regex, '$2');
console.log(result);

https://ithelp.ithome.com.tw/upload/images/20200823/201068658DkdnhmXCY.jpg

感謝大神!

0
我思故我在
iT邦研究生 2 級 ‧ 2020-08-22 20:59:00

發現可以使用以下方式來捉取符合起始或尾隨的非單字元: ^\W+|\W+$

^\W+: 在開始時匹配 1+ 個非單字元。
|: 或。
\W+$: 在結束之前符合 1+ 個非單字元。

看更多先前的回應...收起先前的回應...
dragonH iT邦超人 5 級 ‧ 2020-08-22 21:05:43 檢舉

為啥可以回自己的問題

是本來就可以的嗎...

太應景了吧

他有兩個帳號/images/emoticon/emoticon21.gif

/images/emoticon/emoticon39.gif

小魚 iT邦大師 1 級 ‧ 2020-08-23 11:30:51 檢舉

/images/emoticon/emoticon16.gif

我要發表回答

立即登入回答