gpt4 book ai didi

jquery - 正则表达式匹配 @"*"

转载 作者:行者123 更新时间:2023-12-01 02:45:02 25 4
gpt4 key购买 nike

我正在尝试在 jQuery 中使用正则表达式,但遇到了一些问题。这是我正在操作的字符串:

NSLog(@"It works!");

我希望正则表达式选择 @"和 "之间的所有内容(包括在内)。这个正则表达式在 Reggy 中工作得很好,但是当放入我的 JavaScript 中时,不起作用:

@".*"

本节中我的 jQuery 代码如下(也许是单引号问题?):

var regex='@".*"';
$(".syntaxhighlight").highlight(regex,'string');

我知道问题不在于highlight()函数,因为它工作得很好:

$(".syntaxhighlight").highlight('nil','string');

那么,如何让这个正则表达式正常工作?

最佳答案

highlight() 功能在内部使用 String.indexOf(),不支持正则表达式对象。

但是,它可以像这样重写:

$.fn.extend({
highlight: function(pat) {
function innerHighlight(node, pat) {
var skip = 0;
if (node.nodeType == 3) {
var res;

while (res = pat.exec(node.data)) {
var spannode = document.createElement('span');
spannode.className = 'highlight';
var middlebit = node.splitText(res.index);
var endbit = middlebit.splitText(res[0].length);
var middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
skip = 1;
}
}
else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i) {
i += innerHighlight(node.childNodes[i], pat);
}
}
return skip;
}
return this.length && pat ? this.each(function() {
innerHighlight(this, pat);
}) : this;
}
});

关于jquery - 正则表达式匹配 @"*",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com