簡體   English   中英

Javascript正則表達式取代“拆分”

[英]Javascript regex to replace “split”

我想使用Javascript Regex而不是split

這是示例字符串:

var str = "123:foo";

當前方法調用:

str.split(":")[1]

這將返回"foo" ,但是在給出不帶:的錯誤字符串時會引發錯誤。

因此,這將引發錯誤:

var str = "fooblah";

對於"fooblah"我只想返回一個空字符串

這應該很簡單,但是一直在尋找它,卻無法弄清楚。 先感謝您。

刪除直到並包括冒號(或字符串的末尾,如果沒有冒號)的部分:

"123:foo".replace(/.*?(:|$)/, '')    // "foo"
"foobar" .replace(/.*?(:|$)/, '')    // ""

此正則表達式如何工作:

.*                 Grab everything
?                  non-greedily
(                  until we come to
  :                a colon
  |                or 
  $                the end of the string
)

正則表達式不會幫助您。 您的錯誤可能是由於稍后嘗試使用undefined引起的。 相反,請先檢查拆分的長度。

var arr = str.split(':');
if (arr.length < 2) {
  // Do something to handle a bad string
} else {
  var match = arr[1];
  ...
}

這是我一直使用的,有不同的變化; 這只是它的一個簡單版本:

function split(str, d) {
    var op = "";
    if(str.indexOf(d) > 0) {
        op = str.split(d);
    }
    return(op);
}

非常簡單,要么返回一個數組,要么返回一個空字符串。

 var str1 = "123:foo", str2 = "fooblah"; var res = function (s) { return /:/.test(s) && s.replace(/.*(?=:):/, "") || "" }; console.log(res(str1), res(str2)) 

這是使用單個正則表達式的解決方案,您需要將其包含在捕獲組中:

^[^:]*:([^:]+)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM