jquery 正则表达式替换了单词空间



我想知道是否有人可以帮助我。我需要在 HTML 代码中用另一个字符串替换一个字符串。假设有一个标题,

我是 foo 与 x-foo 酒吧。

如果单词"foo"在它之前有任何字符,而不是空格,则应替换它。所以第一个"foo"不应该被替换,但第二个"-foo"应该被替换。此外,它应该取代foo和Foo。

我的代码是这样的:

$("h2").html( $("h2").html().replace(/Foo|foo/g, "<span class='replacedFoo'>F</span>oo") );

此代码替换了所有 foo 和 Foo。还有"福"。谁能帮忙?

  • 替换"某物"
  • 不要替换"Foo"

非常感谢大家!

更改所有foo和Foo,在它之前或一行的开头加上一个空格,带有Bar的行

$("h2").html( $("h2").html().replace(/\Sfoo/gi,"Bar") )

\S 匹配所有非空格字符

要使其更复杂:我们拥有什么:

<h2>This is Something-Foo and Dr. Foo</h2>

我们想要什么:

<h2>This is <strong>Something-</strong><span class="replacedFoo">F</span>oo and Dr. Foo</h2>
  • 将"Foo"前面的整个单词替换为强标签。
  • 如果"Foo"前面没有空格,而是任何其他字符,请替换"Foo"的F-匹配"foo"和"Foo"。
  • 不要替换"Foo"。

还有正则表达式大师吗?:)

$("h2").html( $("h2").html().replace(/(^|S)([Ff])oo/g, "$1<span class='replacedFoo'>$2</span>oo") );

(S) - 匹配任何非空格字符并捕获它,以便我们可以在替换后将其放回原处。

([Ff]) - 匹配"F"和捕获的两个情况,以便我们可以用相同的大小写替换。

"$1<span... - 插入我们在匹配开始时找到的非空格字符。

...replacedFoo'>$2</span>... - 插入我们在匹配中找到的相同大小写的"F"。

function replaceFoo(str) {
    return str.replace(/(S)([Ff])oo/g, "$1<span class='replacedFoo'>$2</span>oo");
}
console.log(replaceFoo('I am fooFoo'));
console.log(replaceFoo('Foo foo foo foofoo'));

最新更新