[英]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.