簡體   English   中英

如何在 JavaScript 中鏈式匹配和替換正則表達式

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

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