![](/img/trans.png)
[英]Regular expression in javascript to get contents of <span> tags
[英]Would a regular expression operation on a javascript object alter its contents?
以下代码无法正常运行-正则表达式匹配运行,如果匹配,我会收到我期望的消息。 但是,如果'msg'
包含我正在寻找的其他文本内容,例如“ searchstring2”(并且我已经通过日志记录进行了验证),那么首先运行正则表达式匹配似乎可以防止后续条件通过。 匹配操作是否有可能改变'obj'
?
如果我将正则表达式匹配项移至if / else队列的末尾,则其他条件将按预期工作。
spooky.on('remote.message', function(msg) {
this.echo('======================');
this.echo(msg);
var obj = JSON.parse(msg);
this.echo(obj.type);
this.echo('remote message caught: ' + obj.match_state.toString());
//this.echo(obj.stroke);
regex = /(string_)(looking|whatever)([\d])/g;
if(obj.stroke.match(regex)) {
this.echo('physio message' + obj.stroke.match(regex)[0]);
TWClient.messages.create({
body:obj.stroke.match(regex)[0]+' match id: '+obj.matchid,
...
}, function(err, message) {
//error handling
});
}
else if (obj.type.toString() == "searchstring2" && obj.match_state.toString() == "C") {
this.echo(obj.type);
TWClient.messages.create({
body:obj.surname1 +' v '+obj.surname2+ ' started time: '+obj.utc_timestamp,
...
if(err) {
console.log(err, message);
}
});
}
else if (obj.type.toString() == "searchstring3" && obj.match_state.toString() =="F") {
this.echo(obj.match_state);
TWClient.messages.create({
body:'match '+obj.matchid+' finished, time: '+obj.utc_timestamp,
...
}, function(err, message) {
//error handling
});
}
});
使用g
标志构建的正则表达式是一种迭代器:操作会更改其内部状态。
您可能不需要在这里使用此标志。
您还可以这样重写代码:
var regex = /(string_)(looking|whatever)([\d])/g, // don't forget the var
m = obj.stroke.match(regex);
if (m) {
this.echo('physio message' + m[0]);
TWClient.messages.create({
body:m[0]+' match id: '+obj.matchid,
这样可以避免两次无用的match
操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.