![](/img/trans.png)
[英]Match and remove everything up to and including “=” in string with regex
[英]How to form regex to match everything up to a "("
在 javascript 中,如何形成正則表達式以匹配所有內容,但不包括左括號“(”?
示例輸入:
"12(pm):00"
"12(am):))"
"8(am):00"
我發現/^(.*?)\\(/
在“高達”部分成功,但返回的匹配包括“(”
在 regex101.com 中,它說第一個捕獲組是我要找的,有沒有辦法只返回捕獲的組?
有三種方法可以解決這個問題。 第一個是限制你匹配的字符不包括括號:
let match = "12(pm):00".match(/[^(]*/); console.log(match[0]);
第二種是使用捕獲組僅獲取您感興趣的匹配部分:
let match = "12(pm):00".match(/(.*?)\\(/); console.log(match[1]);
第三種是使用lookahead從匹配中明確排除括號:
let match = "12(pm):00".match(/.*?(?=\\()/); console.log(match[0]);
與 OP 一樣,請注意第二種和第三種情況下的非貪婪修飾符:有必要限制量詞,以防字符串內部還有另一個開括號。 這首先不是必需的,因為明確禁止量詞吞噬括號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.