我有这个字符串,例如:
今天的Hello World是星期四
我希望我的正则表达式只匹配字母:H,W和T.
请有人帮我用Javascript做这件事。
谢谢!
答案 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)
字符类:仅匹配字母H
,W
和T
您可以使用这个简单的正则表达式:
[HWT]
括号创建一个字符类,表示"匹配类中的一个字符"。
例如,要获得第一场比赛:
var myregex = /[HWT]/;
var matchArray = myregex.exec(yourString);
if (matchArray != null) {
thematch = matchArray[0];
} else {
thematch = "";
}