我正在尝试编写一个函数,将 textarea
中的一些单词大写,但我遇到了麻烦,因为这些单词可能是其他单词的一部分,我只想在以下情况下将它们大写:他们孤独地站着。
例如:我想将 OR
大写,但仅限于不在像 befORe
这样的单词中时。然而,这些单词可以用多种方式编写,例如在行的开头、一个或多个空白
字符之间或类似这样的内容:(somethingsomething)OR(somethingelse)
甚至可能更多,具体取决于其他人编写查询代码的方式。
我有使用正则表达式
的想法,但我不够熟练,无法弄清楚编写这些单词的所有可能性。
我无法将 textarea
更改为其他更好的插件或编辑器,因为它已经是功能脚本的一部分。
任何有用的想法将不胜感激。
编辑:还有一个问题
我的问题得到了非常有用的答案,谢谢大家。不过我还有一个问题。如果除了检查它是否不是单词的一部分之外,我还想检查它前面或后面是否有 .
句点,该怎么办?我尝试在其开头添加 (?!\.)
,但这根本不起作用。有没有办法检查一下?
//编辑:没关系,我已经弄清楚了。它是\b(?!\.)something(?!\.)\b 用于检查单词的开头和结尾。
最佳答案
在单词边界上匹配 \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
关于javascript - 如果字符串不是较大字符串的一部分,则使用 javascript 中的正则表达式替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30931028/