[英]Regular Expression to match a pattern that contain some string except some string
我有如下字符串:
var string = "'abc'+@VAL([Q].[F1 w1 w1 w1])+ 'hellllllllllo'+@VAL([Q].[F2 w]) +'anything'+@VAL([Q].[F3 w])+anything";
我想匹配以下模式
@VAL([Q].[F1 w1 w1 w1])
@VAL([Q].[F2 w])
@VAL([Q].[F3 w])
其實我想匹配@VAL字符串模式開始(和結束),我曾嘗試用下面的代碼:
var patt1 = /@VAL\((.*)\)/g;
var myPattern = string.match(patt1);
並得到以下結果
@VAL([Q].[F1 w1 w1 w1])+ 'hellllllllllo'+@VAL([Q].[F2 w]) +'anything'+@VAL([Q].[F3 w])
我無法解決需要幫助!
這將返回所有匹配項:
result = subject.match(/@VAL\([^)]*\)/g);
參見演示 。
@VAL\\(
匹配@VAL(
[^)]
匹配一個不是)
字符... *
量詞重復零次或多次 *\\)
匹配右括號 您的正則表達式過於貪婪,請使用以下基於否定的正則表達式:
var patt1 = /@VAL\(([^)]*)\)/g;
或者只是變得懶惰:
var patt1 = /@VAL\((.*?)\)/g;
var m = string.match(patt1);
//=> ["@VAL([Q].[F1 w1 w1 w1])", "@VAL([Q].[F2 w])", "@VAL([Q].[F3 w])"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.