匹配和替换javascript中的子字符串问题
match and replace substring issue in javascript
所以我有以下代码
function format(){
return arguments[0].replace(
/%([0-9])/g,
function($1){alert($1)}
)
}
var sql=format("SELECT * FROM %1 WHERE id='%2' ", table, id);
var table= "table1";
var id = "F1542";
这会警告"%1"answers"%2",但是如果我运行这段代码:
function format(){
return arguments[0].replace(
/%([0-9])/g,
"$1"
)
}
var sql=format("SELECT * FROM %1 WHERE id='%2' ", table, id);
alert(sql);
我得到"SELECT * FROM 1 WHERE id='2'",我的目标是获得没有%的匹配,这样我就可以在参数数组中使用它(即参数[$1]),但是我所尝试的一切都返回了"未定义",因为它似乎正在寻找参数[%1]或参数[%2]。
为什么第一组代码返回了错误的值,而第二组代码却没有?我的印象是子字符串匹配可以通过使用$1,$2等找到…
PS抱歉,如果我没有很好地解释这一点。
replace()
将返回修改后的字符串(不是匹配项)。在第一个示例中,您将函数定义为参数,并通知找到的变量。您可以使用match()
来获得匹配项的集合,或者如果您将两个示例组合起来,则会得到如下内容:
function format(){
var args = Array.prototype.slice.call(arguments, 0);
var sql = args[0];
return sql.replace(
/%([0-9])/g,
function(matchVar,matchVal){
return args[matchVal];
});
}
replacer函数中的第二个参数是第一个匹配的匹配值。您可以使用该值作为参数数组的索引。
http://jsfiddle.net/N6S4Q/相关文章:
- 日期 ISO 日期字符串问题
- Angularjs-拆分字符串问题
- 字符串问题的javascript赋值
- If语句出现字符串问题
- 简单的php字符串问题(HTML和javascript)
- Javascript编号/字符串问题
- Google Charts - hAxis 上的数字/字符串问题(Jquery ajax JSON 数据)
- NodeJS MongoDB 连接字符串问题
- 多行字符串问题
- Javascript子字符串问题
- PhoneGap Android查询字符串问题
- 获取子字符串问题(js.或jquery)
- Javascript生成的字符串问题中的双引号
- C++11 std::regex_replace()创建带有特定字符串问题的regexp
- Imagecreatefromstring从javascript传入的字符串问题
- Javascript和查询字符串问题
- JQuery -奇数整数/字符串问题
- JavaScript转义字符串问题
- JQuery移动查询字符串问题在非pushState浏览器
- 匹配和替换javascript中的子字符串问题