Javascript 如果匹配特定单词,大写前 x 个字符?

Javascript Uppercase first x characters if matching specific words?

我正在尝试 javascript / jquery 如何将字符串的前 3 个字符大写,如果该字符串以多个匹配项之一开头。

在php我能做到:

$loc = (preg_match("/^(nww|nsw|esw|sew|wes)/i", $loc)) ? strtoupper( substr( $loc, 0, 3 ) ).substr( $loc, 3 ) : ucfirst($loc);

这会将 nsw48751 更改为 NSW48751,但将 newlease 更改为 Newlease。

如何在 javascript 或 jquery 中执行此操作?

谢谢

一个选项是交替匹配这 3 个字母中的任何一个,如果找到 none 个字母,则匹配字符串中的第一个字母。然后,使用替换函数将匹配项大写:

const change = str => str.replace(/^(?:nww|nsw|esw|sew|wes|[a-z])/i, match => match.toUpperCase());
console.log(change('nsw48751'));
console.log(change('newlease'));

可以使用 RegExp.test() 检查正则表达式是否满足您的条件,顺便说一句,CertainPerformance 的解决方案很棒!

var string1 = 'nsw48751';
var string2 = 'newLetter';


function foo (str) {
  r = /^(nww|nsw|esw|sew|wes)/i
  if (r.test(str)) {
    return str.substring(0,3).toUpperCase() + str.substring(3)
  }
  return str.substring(0,1).toUpperCase() + str.substring(1)
}

console.log(foo(string1));
console.log(foo(string2));