JavaScript Regex 的 字串比對(Match) 與 取代(Replace) Javascript 的 Regex 該怎麼使用, 如何做 Match 和 Replace 的動作, 語法該怎麼寫. 先來一個簡單的 HTML source <form name="form_name"> <input type="text" name="input_name" id="id_name" value=""> </form> 抓取 Input Value // 直接抓取 form input value var var_value = form_name.input_name.value; // 若欄位有 id="id_name", 則用 var var_value = getElementById('id_name'); 檢查輸入值是不是數字(Match) // 可參考: JavaScript match() Method // stringObject.match(searchvalue) // match 語法: variable.match(regex), return null/regex value var score = 12; // 1.2, 1., 1, -1.2, -1, -1., -1.25, -12., -13, -133.235, 133.235 var regex = /^-?\d+\.?\d*?$/; if (score.match(regex)==null) { alert("不是數值"); } 字串取代(Replace) // 參考: JavaScript replace() Method // stringObject.replace(findstring,newstring) // replace 語法: variable.replace(regex, '要取代成什麼字') var str = "this is a book123!"; var regex=/book\d+/gi; // 不能寫成 regex="/book\d+/gi"; alert(str.replace(regex,"test")); // 把 book123 取代成 test 其它 Regular Expression (RegExp) in JavaScript Tsung兄你好!誠心的請教您一些問題: var oldString = '44+4'; newString = oldString.replace(/4/g,'#'); 預期結果是 44+#,但結果是 ##+# 我去趴文之後,似乎要用「^匹配的是字符的開頭」和「$匹配的是字符的結尾」,於是修改如下: var oldString = '44+4'; newString = oldString.replace(/^4$/g,'#'); 但結果是 44+4 沒有改變。JS的正規表達式似乎跟PHP有些出入 所以此段結論為「如何取代字串中指定的數字?」 另外一個想法是,是否有辨法動態產生「正規式」,預期的程式會如下: var num_arr = Array(1,3,5); var oldString = '1+2+3+4+5+6'; for(var i=0; i Tsung | 2008 年 07 月 25 日 at 23:38:22 | 回覆 不好意思, 您下面的程式我沒有看到完整的, 所以不知道該怎麼跟您說~ 然後上面的表達式, 您寫法只要 newString = oldString.replace(/4$/g,'#'); 這樣子就可以囉~ sankai | 2008 年 07 月 26 日 at 20:21:07 | 回覆 剛經過測試replace(/4$/g,'#')方式 在一個字串含有多個重複的字元時,似乎只會取代最後一個出現的字元 str = '4+44+44+4';0 str.replace(/4$/g,'#'); //預期為'#+44+44+#' //結果為'4+44+44+#' 至於動態產生規式,在上述方式都未能達成的情況上,就先暫不考慮了=_= 最後還是仍然感謝Tsung兄的回覆,看來我得跟這個問題撕殺一陣子了 Tsung | 2008 年 07 月 26 日 at 21:50:49 | 回覆 我寫的那個只是要取代最後一個, 因為你上面的範例是跟我說只要取代最後一個說~ @.@a.. 至於要取代前面, 我通常會在下面再多作一次取代前面的動作, 用 "^4" 即可~ 就是兩次 replace 就搞定囉 貝爾丹迪 | 2009 年 06 月 27 日 at 20:08:19 | 回覆 textdoc = "4+44+444+4+44+4"; textdoc = "+" + textdoc + "+" textdoc = textdoc.replace(/\+4\+/g,'+#+'); answer = textdoc.replace(/^\+|\+$/g,''); 要代換兩次才弄的出來 首先 文字的前後都加上一個+ 然後中間有+4+換成+#+ 最後在把頭尾的+號弄掉 就大功告成 基本上 要剛好1個4 大概只能這樣做了 Ding | 2009 年 10 月 19 日 at 09:44:31 | 回覆 var str = "4+44+4+444+4"; str.replace(/([^4]{1}|^)4{1}([^4]{1}|$)/g,"$1#$2") 彼得小兔 | 2009 年 12 月 31 日 at 02:51:47 | 回覆 可以使用 new Regex(pattern) 達成動態產生正規表達式 var pattern = "(^\\d*)$"; var regex = new Regex(pattern); regex.test("222"); 回 · javascript 字串處理方式 這一篇文章封面 |
本站公告:〔您越需要我們,我們就越有創意〕 | 本站說明書:〔發現故鄉還有改進的地方,請來信告訴原丁們〕 |
觀察應用學習點數 :〔咱的故鄉有您的參與,會使我們有更大的發揮空間,展現更豐富精彩的學習畫面〕 | 〔期待藉由無障礙網頁設計,能讓視障小朋友更愛看書、更愛寫作且更愛學習〕:盲用電腦「心得分享」 |