[英]How to chain match and replace regular expression in JavaScript
str="abc { return false;}"
我只想從字符串“str”中獲取單詞“false”,如下所示,
str.match(/return \w+;/g).replace(/return/,"")
這是錯的 ! 如何更正此表達式以獲得所需的單詞?
str.match
將返回一個包含匹配元素的數組,而不是單個字符串。 這就是.replace
失敗的原因。 一個快速的解決方法是添加[0]
來替換第一個數組元素,如下所示: str.match(/return \\w+;/g)[0].replace(/return/,"")
但是,這將返回false;
(不完全是您想要的)並且當根本沒有匹配項時它將失敗:“未捕獲的類型錯誤:無法讀取 null 的屬性 '0'”
更好的方法是使用帶括號的捕獲組:
var str= "abc { return false;}"
var re = /return (\w+);/g
var results = re.exec(str);
結果又是一個數組,第一個元素是完全匹配,第二個元素是第一個捕獲組: ["return false;", "false", index: 6, input: "abc { return false;}"]
如果目標只是從字符串(函數文本定義)中提取“返回值” - 它可以通過一個操作來實現,無需鏈接:
var str = "abc { return true;}";
console.log(str.match(/return (\w+?);/)[1]); // outputs "true"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.