我正在尝试编写一个正则表达式,只匹配字符串中只包含非大写字母的单词,但无法弄明白。
实施例
var str = "What a wonderful Sunday Afternoon";
我已设法使用此正则表达式var str1 = str.match(/[A-Z][a-z]+/g)
此处str1
返回[What, Sunday, Afternoon]
我现在要做的是编写一个返回a
和wonderful
的正则表达式。
答案 0 :(得分:5)
你可以使用这个正则表达式。
\b([a-z]+)\b
演示:https://regex101.com/r/uQ6lT4/1
您当前的正则表达式[A-Z][a-z]+
说一个大写字母,然后是任意数量的小写字母。
如果没有[A-Z]
,您只需要查找全部小写字母,那么部分单词就会匹配。添加单词边界将确保值为一个单词(不包括带连字符的单词)。
答案 1 :(得分:4)
您不需要正则表达式。
只需将字符串拆分为空格,然后根据该字是否为小写来过滤数组。
var string = "What a wonderful Sunday Afternoon";
var lowerCaseWords = string.split(' ').filter(function(word) {
return word === word.toLowerCase();
});
console.log(lowerCaseWords);
// ["a", "wonderful"]
答案 2 :(得分:0)
你也可以使用以下方法
var string = "What a wonderful Sunday Afternoon";
string .split(' ').forEach(function(v,k){
if(/[a-z]/.test(v.charAt(0))){
console.log(v);
return v;
}
})
var string = "What a wonderful Sunday Afternoon";
string .split(' ').forEach(function(v,k){
if(/[a-z]/.test(v.charAt(0))){
console.log(v);
return v;
}
})