Javascript 字符串匹配
Javascript String Matching
这是我到目前为止得到的:
var source = '>R$11111</b>';
var price = source.match(/[^R$]'d+/);
"源代码"有点像内部HTML插入,但我已经记下来了。
问题是"价格"必须在'R$'
和'</b>'
之间,无论它们之间是什么,从1到无穷大。我在那里得到的东西会起作用,但是当我从中取出'R$'
或'</b>'
时,它仍然会找到价值和额外的字符。
基本上我只需要帮助来制作它,所以它只会在 'R$'
和 '</b>'
之间拾取值,当两者都存在时。
从 R$ 到 字符串末尾的 OR。但是R$和价格之间没有空间。
嗯,[^R$]
匹配"恰好是一个既不是R
也不是$
的角色",所以这可能不是你想要的。
var price = source.match(/R'$('d+)/)[1];
或者,如果价格可能不是所有数字:
var price = source.match(/R'$(.*?)<'/b>/)[1];
重要的是您关心的部分周围的括号,这会导致与括号之间的任何文本匹配的文本都作为数组的第二个元素包含在匹配的返回值中(第一个是与整个正则表达式匹配的文本部分)。
如果字符串可能与正则表达式不匹配,那么最好分两步完成:
var match = source.match(/whichever/);
if (match) {
price = match[1];
} else {
console.log("no price found.");
}
var source = '>R$11111</b>';
var price = source.match(/R'$('d+)<'/b>/);
if (price)
console.log(price[1]); // 11111
这是一个非正则表达式解决方案,以防有人感兴趣:
function getPrice(str, start, end){
var first = str.indexOf(start),
last = str.lastIndexOf(end);
return ~first ?
str.slice(first + start.length, (~last ? last : str.length))
.replace(/^'s+/, "")
:
str;
}
var source = "...R$ 21112</b>...";
console.log(getPrice(source, "R$", "</b>")); //"21112"
console.log(getPrice(source, "R$", "nomatch")); //"21112</b>..."
console.log(getPrice(source, "nomatch", "</b>")); //"...R$ 21112</b>..."
演示
相关文章:
- RegEx以匹配字符串中的两个或多个名称
- 如何在javascript中使用string.replace.将匹配字符串开头的两个不同表达式替换为null
- Javascript中的搜索栏-部分匹配字符串
- 如果条件推送包含/匹配字符串的值
- 如何匹配字符串中的日期
- 用于循环和匹配字符串的 JavaScript
- JavaScript 中的正则表达式:匹配字符串开头的多个子字符串
- 使用javascript匹配字符串中数组的一个元素
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- 在谷歌地图API自动完成中显示不匹配字符串的结果
- JavaScript Regexp仅匹配字符串的一部分
- 如何匹配字符串开头的数字
- 我该如何编写一个正则表达式来匹配字符串后面的值(到下一个逗号)
- Javascript:为什么要使用indexOf()来匹配字符串中的值
- 使用正则表达式中的变量与$和^匹配字符串
- 使用数组中的所有字符串匹配字符串
- javascript正则表达式匹配字符串包含阿拉伯特殊字符符号'œ;u0640
- 正则表达式.在满足条件之前,避免匹配字符串
- 正则表达式父项,用于匹配字符串中的维度
- Javascript RegExp - 匹配字符串并替换