我试图编写一个函数,它会在textarea
中大写一些单词,但我有麻烦,因为这些单词可能是其他单词的一部分,我只想大写它们当他们独自站立时
例如:我想要大写OR
,但仅限于befORe
之类的单词。然而,这些单词可以通过多种方式编写,例如在行的开头,一个或多个whitespace
字符之间或类似的内容:(somethingsomething)OR(somethingelse)
甚至可能更多,具体取决于方式其他人写他们的查询代码。
我有与regex
合作的想法,但我没有足够的技巧来解决写这些单词的所有可能性。
我无法将textarea
更改为其他更好的插件或编辑器,因为它已经是正常运行的脚本的一部分。
非常感谢任何有用的想法。
编辑:另外一个问题
我的问题得到了非常有用的答案,谢谢大家。我还有一个问题。如果,除了检查它不是单词的一部分之外,我还要检查它是否在.
期之前或之后。我尝试在其开头添加(?!\.)
,但这根本不起作用。有没有办法检查它?
//编辑:没关系,我明白了。它是一个(?!\。)\ b,用于检查单词的开头和结尾。
答案 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');