如果该字符串以多个匹配项之一开头,我正在尝试在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中做到这一点?
谢谢
答案 0 :(得分:3)
一个选项是在匹配这3个字母中的任何一个之间交替,如果没有找到,则匹配字符串中的第一个字母。然后,使用替换函数将匹配项大写:
const change = str => str.replace(/^(?:nww|nsw|esw|sew|wes|[a-z])/i, match => match.toUpperCase());
console.log(change('nsw48751'));
console.log(change('newlease'));
答案 1 :(得分:1)
可以使用RegExp.test()来检查正则表达式是否满足您的条件,并确定SomePerformance的解决方案很棒!
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));