使用正则表达式检测每个单词的第一个字母是否为高位

时间:2014-07-10 22:31:14

标签: javascript regex

我有这个字符串,例如:

今天的Hello World是星期四

我希望我的正则表达式只匹配字母:H,W和T.

请有人帮我用Javascript做这件事。

谢谢!

4 个答案:

答案 0 :(得分:2)

这个怎么样?

var string = 'Hello World today is Thursday';
string.match(/\b[A-Z]/g);
    // \b matches the beginning of the word
    // [A-Z] matches only capital letters
    // g makes it a greedy search that searches the entire string for all matches, rather than just first.

// returns ['H','W','T']

如果你想要获得完整的单词,而不仅仅是第一个字母,你可以添加\ w +来匹配每个大写之后的所有非空白字符。

var string = 'Hello World today is Thursday';
string.match(/\b[A-Z]\w+/g);
// returns ['Hello', 'World', 'Thursday']

答案 1 :(得分:2)

您可以使用\b正则表达式标记来定义单词边界。将其配对以确保第一个字母在A-Z范围内并且您已设置。这将为您提供一个数组,其中包含首字母大写的单词,然后您可以随意使用它:

str.match(/\b([A-Z])\w*?\b/g, str);

答案 2 :(得分:2)

要快速检测每个单词是否被捕获,您可以将您的字符串与大写版本进行比较:

function capitalize(str) {
    return str.replace(/^.|\b./g, function(match) {
        return match.toUpperCase();
    });
}

var str = 'Hello World today is Thursday';

console.log(capitalize(str) === str); // false

str = 'Hello World Today Is Thursday';

console.log(capitalize(str) === str); // true

答案 3 :(得分:0)

字符类:仅匹配字母HWT

您可以使用这个简单的正则表达式:

[HWT]

括号创建一个字符类,表示"匹配类中的一个字符"。

例如,要获得第一场比赛:

var myregex = /[HWT]/;
var matchArray = myregex.exec(yourString);
if (matchArray != null) {
    thematch = matchArray[0];
} else {
    thematch = "";
}