如果字符串不是javascript中使用正则表达式的较大字符串的一部分,请替换字符串

时间:2015-06-19 06:08:08

标签: javascript php regex string replace

我试图编写一个函数,它会在textarea中大写一些单词,但我有麻烦,因为这些单词可能是其他单词的一部分,我只想大写它们当他们独自站立时

例如:我想要大写OR,但仅限于befORe之类的单词。然而,这些单词可以通过多种方式编写,例如在行的开头,一个或多个whitespace字符之间或类似的内容:(somethingsomething)OR(somethingelse)甚至可能更多,具体取决于方式其他人写他们的查询代码。

我有与regex合作的想法,但我没有足够的技巧来解决写这些单词的所有可能性。

我无法将textarea更改为其他更好的插件或编辑器,因为它已经是正常运行的脚本的一部分。

非常感谢任何有用的想法。

编辑:另外一个问题

我的问题得到了非常有用的答案,谢谢大家。我还有一个问题。如果,除了检查它不是单词的一部分之外,我还要检查它是否在.期之前或之后。我尝试在其开头添加(?!\.),但这根本不起作用。有没有办法检查它?

//编辑:没关系,我明白了。它是一个(?!\。)\ b,用于检查单词的开头和结尾。

3 个答案:

答案 0 :(得分:2)

匹配单词边界\b可能适合:

'foo or bar'.replace(/\bor\b/, 'OR'); // foo OR bar

您还可以提供替换功能,所以:

'foo or bar'.replace(/\b(or)\b/, function(m){return m.toUpperCase()})); // foo OR bar

这可能适用于您有多个可能匹配的情况:

'foo or bar and fum'.replace(/\b(or|and)\b/ig, function(m){return m.toUpperCase()}); // foo OR bar AND fum

答案 1 :(得分:1)

这样的东西? (°_•)

var txt="or some text or before (.)or(.) anywhere Or";

console.log(txt.replace(/\bor\b/gi,"OR"));     

// "OR some text OR before (.)OR(.) anywhere OR"

答案 2 :(得分:0)

这样的事情:

'(something)or(somethingelse) before or oR Or OR oreos thor'.replace([^\w]([oO][rR])[^\w], 'OR');