Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式匹配字符串并避免间隔_Javascript_Php_Jquery_Regex_Text Parsing - Fatal编程技术网

Javascript 正则表达式匹配字符串并避免间隔

Javascript 正则表达式匹配字符串并避免间隔,javascript,php,jquery,regex,text-parsing,Javascript,Php,Jquery,Regex,Text Parsing,我正在使用javascript/jquery和 我有这个字符串: (请注意,这是一个包含Html的字符串,因此我不能只执行$('.myClass')。随便:) " asd二级a类 asd类df 班 自卫队aa级 自卫队aa级 " 我想制作一个只匹配某个单词但不匹配html标记的regexp。 例如,如果我的单词是“class”,我希望匹配: ([]存储模块是匹配的) " asd[class]2A类 [类别]asd df [课堂] [类别]自卫队[类别]aa [类别]自卫队[类别]aa " 而

我正在使用javascript/jquery和 我有这个字符串: (请注意,这是一个包含Html的字符串,因此我不能只执行$('.myClass')。随便:)

"

asd二级a类
asd类df
班
自卫队aa级
自卫队aa级
"

我想制作一个只匹配某个单词但不匹配html标记的regexp。 例如,如果我的单词是“class”,我希望匹配: ([]存储模块是匹配的) "

asd[class]2A类
[类别]asd df
[课堂]
[类别]自卫队[类别]aa
[类别]自卫队[类别]aa
" 而不是这个: ([]存储模块是匹配的) "

asd[class]2A类
[类别]asd df
[课堂]
[类别]自卫队[类别]aa
[类别]自卫队[类别]aa
"
有人能帮我吗?:)

我想这就是你需要的:

$html = <<< EOF
<div [class]="myClass"> asd [class] 2 a a a a a a </div>   class
<div [class]="myClass"> [class] asd df </div>
<div [class]="myClass"> [class2] </div>
<div [class]="myClass"> [class2] sdf [class] aa </div>
<div [class]="myClass">[class] sdf [class] aa </div>
EOF;

preg_match_all('/(\[class\]|\[class2\])(?=[^>]*(<|$))/i', $html, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[1]); $i++) {
    echo $result[1][$i];
}
[class][class][class2][class2][class][class][class]
var myregexp = /(\[class\]|\[class2\])(?=[^>]*(<|$))/ig;
var match = myregexp.exec(subject);
while (match != null) {
    // matched text: match[0]
    // match start: match.index
    // capturing group n: match[n]
    match = myregexp.exec(subject);
}

如果您只需要一个javascript正则表达式,可以使用:

$html = <<< EOF
<div [class]="myClass"> asd [class] 2 a a a a a a </div>   class
<div [class]="myClass"> [class] asd df </div>
<div [class]="myClass"> [class2] </div>
<div [class]="myClass"> [class2] sdf [class] aa </div>
<div [class]="myClass">[class] sdf [class] aa </div>
EOF;

preg_match_all('/(\[class\]|\[class2\])(?=[^>]*(<|$))/i', $html, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[1]); $i++) {
    echo $result[1][$i];
}
[class][class][class2][class2][class][class][class]
var myregexp = /(\[class\]|\[class2\])(?=[^>]*(<|$))/ig;
var match = myregexp.exec(subject);
while (match != null) {
    // matched text: match[0]
    // match start: match.index
    // capturing group n: match[n]
    match = myregexp.exec(subject);
}
var myregexp=/(\[class\]\[class2\])(?=[^>]*(您可以尝试以下方法:

$(document).ready(function() {
    $(".myClass").text(function () {
        return $(this).text().replace("class", "[class]"); 
    });
}); 

查看JSFIDLE:

匹配单词后,请参见
以便我不能只执行$('.myClass')。实际上可以执行任何操作。最好将此HTML加载到jQuery对象中并正确遍历它,而不是无缘无故地使用正则表达式