定义和用法
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
参数
参数 | 描述 |
---|---|
searchvalue | 必需。规定要检索的字符串值。 |
regexp | 必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。 |
返回值
存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。
示例
下面以一条sql为示例 参数由 #{id} 或 ${id} 表示 通过match()方法匹配到占位符中的id
Html代码
<input class="form-control" name="matchTest" id="executeSql" value=""/>
<button type="button">点击获取文本框中的id<button/>
<!-- 在input中输入 -->
SELECT * FROM Student WHERE id = #{id} , name = ${name}
JavaScript代码
function refreshParamsTable(){
var sql = $("#executeSql").val();
// 这里会匹配到 #{id}
var arr = sql.match(new RegExp(/(?<=#\{)(.+?)(?=\})/g)); // arr["id"]
// 结果数组
var params = [];
// 如果arr不为空 则将arr中的值添加到结果数组中
if(arr != null){
for(var x = 0; x < arr.length; x++){
params.push(arr[x].trim());
}
}
// 这里会匹配到${name} 那么arr2中存的应该就是name
var arr2 = sql.match(new RegExp(/(?<=\$\{)(.+?)(?=\})/g)); // arr2["name"]
if(arr2 != null){
for(var i = 0; i < arr2.length; i++){
params.push(arr2[i].trim());
}
}
alert(params);
// 最后弹出的结果应该是["id","name"]
}