我需要替換小于或大于( < >) 個字符,但保留任何 html 標簽(簡單的標簽就像<b>text</b>沒有引數一樣)。所以輸入如下:
<b>> 0.5 < 0.4</b> - <>
應該:
<b>> 0.5 < 0.4</b> - <>
我現在設法找到和編輯的是這個 expr:
<\/?[a-z][a-z0-9]*[^>\s]*>|([<>])
它對<和>字符進行分組,但它也匹配標簽女巫我不需要替換
UPD: 感謝@Sree Kumar,這是最終的功能:
String.prototype.replaceAt = function (index, char) {
let arr = this.split('');
arr[index] = char;
return arr.join('');
};
String.prototype.escape = function () {
let p = /(?:<[a-zA-Z] >)|(?:<\/[a-zA-Z] >)|(?<lt><)|(?<gt>>)/g,
result = this,
match = p.exec(result);
while (match !== null) {
if (match.groups.lt !== undefined) {
result = result.replaceAt(match.index, '<');
}
else if (match.groups.gt !== undefined) {
result = result.replaceAt(match.index, '>');
}
match = p.exec(result);
}
return result;
};
uj5u.com熱心網友回復:
這是一種使用命名組的方法。也就是說,命名您想要的組并查找它。它可能是null或undefined有時是因為它不匹配。因此,您必須添加空檢查。
注意(?<B>...)圍繞“所需”組。另外,請注意第 5 行中的空檢查。
let p = /(?:<[a-zA-Z] >)|(?:<\/[a-zA-Z] >)|(?<B>[<>])/g
let input = '<b>> 0.5 < 0.4</b> - <>';
let match = p.exec( input );
while( match !== null) {
if( match.groups.B !== undefined ) console.log( match.groups.B );
match = p.exec( input )
}
uj5u.com熱心網友回復:
試試這個正則運算式:
<(?!\/?\w >)|(?<!<\w |<\/\w )>
解釋
<(?!\/?\w >)查找所有 '<' 符號(標簽除外)(?<!<\w |<\/\w )>查找所有 '>' 符號(標簽除外)
您可以單獨使用它們:
let str = '<b>> 0.5 < 0.4</b> - <>';
let lessThen = /<(?!\/?\w >)/g;
let greaterThen = /(?<!<\w |<\/\w )>/g;
str = str.replace(lessThen, '<');
str = str.replace(greaterThen, '>');
console.log(str); // <b>> 0.5 < 0.4</b> - <>
注意!它只在標簽之間找到符號“<”和“>”。它不檢查 html 是否有效。對于這樣的文本,<a></b>它不會找到任何匹配項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377518.html
標籤:javascript 正则表达式
下一篇:正則運算式匹配選項卡
