2016-03-10 3 views
1

У меня есть функция, которая возвращает верхний из первой буквы каждого слова в моей строке:JQuery Первый Upper С Regex

function firstUpper(str) 
{ 
    return str = str.toLowerCase().replace(/^(.)|\s(.)/g, function(letter) { 
     return letter.toUpperCase(); 
    }); 
} 

firstUpper("MY TEST"); 
//returns "My Test" 

Ok. Но мне нужно, чтобы изменить регулярное выражение, потому что он не работает так:

firstUpper("MY-TEST"); 
//returns "My-test" 

Я хочу, чтобы моя функция возвращает это: "My-Test"

+1

Я считаю, что вам просто нужно '/ \ б/gi' или'/\ Ь [аз]/gi' - см [это демо] (https:. // jsfiddle .net/81 xehpbb /) (Обратите внимание, что '\ b' не будет работать с буквами Unicode). –

ответ

1

Вам просто нужно изменить свой RegEx работать, когда есть - префикс перед тем характер:

/^(.)|\s(.)|-(.)/g 

Working example

+0

Изменение здесь мало используется. Как могут быть и другие персонажи. –

+0

@noob Я не уверен в вашей точке. Если предыдущее выражение соответствовало требованию OPs, то это тоже будет. –

+0

Спасибо @RoryMcCrossan, он работает! u забыл '/ g' на вашем посту. – Thiago

Смежные вопросы