SCOPE
假设我们有一个字符串$(document).ready(function(){
$('select.car-selector').change(function () {
var packagePrice = $(".car-selector option.b:selected").val();
if(packagePrice!=undefined)
$('div.price-here').text(packagePrice + " USD");
else
$('div.price-here').text("Default price");
});
})
需要量
我想要一个正则表达式,它给出d或g的出现,但不是当它们严格(没有其他字符)用引号括起来时。
因此,在上面的字符串中,匹配的出现次数(包含在{}中)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<form>
<select class="car-selector">
<option class="a" value="" selected>Select brand</option>
<option class="b" value="150">Volvo</option>
<option class="b" value="350">Saab</option>
<option class="b" value="150">Opel</option>
<option class="b" value="500">Audi</option>
</select>
</form>
<br /><br />
<div class="price-here">Default price</div>
修改的
我正在尝试这样的事情:
hello how are you dog? "d" I am "good" "g" ha good
注意
我在Javascript工作。无法想出一个模式。
由于
答案 0 :(得分:0)
这是一种方法:
使用string
的{{1}},使用功能方法和正则表达式
replace
您可以检查捕获是否与任何内容匹配。如果不是,则匹配为("[^"]*"|[^dg])|.
或d
您要替换/删除/转换(或其他;)。在示例中,我将其设为大写。
<强>解释强>
正则表达式首先尝试匹配双引号字符串 - g
。如果匹配它的捕获。如果不是,则会尝试匹配并捕获字符其他而不是"[^"]*"
或d
- g
。
如果上述其中一个匹配,则将其作为参数[^dg]
发送给该函数。
如果没有匹配,则完整匹配作为参数b
发送,这将是最后的替换,在括号a
之外。
因此,该函数在.
参数中获取有效字符/字符串,或在b
中获取无效。如果a
未定义,请在b
上执行 ,否则只需返回a
。
b
答案 1 :(得分:0)
您需要一个与您不需要的子串(您将要替换的子串)匹配的正则表达式,并匹配并捕获您需要保留的内容。我假设您要保留"g"
和"d"
。使用
/("[gd]")|[dg]/g
请参阅regex demo
将完成最终工作的代码:
var rx = /("[gd]")|[dg]/g;
var s = 'hello how are you dog? "d" I am "good" "g" ha good';
var res = s.replace(rx, function($0,$1) {
return $1 ? $1 : "|";
});
console.log(res); // => hello how are you |o|? "d" I am "|oo|" "g" ha |oo|
&#13;
因此,("[gd]")
匹配并将"g"
或"d"
捕获到第1组中,如果匹配,则在替换期间粘贴该值(请参阅$1 ? $1
),否则,其他上下文中的任何d
或g
都与[dg]
匹配,然后在替换回调方法中替换。
答案 2 :(得分:0)
总结要求
然后regexp = /"(?=g|d)[^"]{2,}"/gi
测试
(`no quote = dog god d g
1 letter only = "d" "g"
2+ letters = "go" "do" "dog" "god", "GoOD"
`).match(/"(?=g|d)[^"]{2,}?"/gi)
// ["go", "do", "dog", "god", "GoOD"]
// then do what you want..