匹配字符串中的单词并使其小写

时间:2015-07-14 17:30:09

标签: javascript regex match lowercase

我有这个示例字符串:

var string = 'This is a süPer NICE Sentence, am I right?';

结果必须是:

this, is, süper, nice, sentence

要求:

  1. 最多5个字,
  2. 包含至少2个字符的字词
  3. 逗号分隔
  4. 负责处理特殊字符,例如ü 目前尚未发生
  5. 全部为小写目前尚未发生
  6. 这是我当前的脚本:(您可以在jsfiddle

    中测试它
    var string = 'This is a süPer NICE Sentence, am I right?';
    var words;
    words = string.replace(/[^a-zA-Z\s]/g,function(str){return '';});
    words = words.match(/\w{2,}/g);
    
    if(words != null) {
        //5 words maximum
        words = words.slice(0,5);
        if(words.length) {
            console.log(words.join(', ')); //should print: this, is, süper, nice, sentence
        }
    }
    

    join之前将匹配的单词转换为小写的最佳方法是什么?

5 个答案:

答案 0 :(得分:1)

答案肯定是toLowerCase(),但我认为运行它的最佳位置是在最后而不是开头(操作的项目较少):

if(words != null) {
    //5 words maximum
    words = words.slice(0,5);
    if(words.length) {
        console.log(words.join(', ').toLowerCase()); //here
    }
}
据我所知,

toLowerCase()是unicode友好的。你的正则表达式正在剥离任何不是a-z,A-Z的东西。

Asker发现此链接有助于解决正则表达式问题:Regular expression to match non-English characters?

答案 1 :(得分:1)

只需使用.toLowerCase()。

var string = 'This is a süPer NICE Sentence, am I right?';
string = string.toLowerCase();
var words = string.split(' ');

//5 words maximum
words = words.slice(0,5);

console.log(words.join(', ')); //should print: this, is, super, nice, sentence

特殊字符被正则表达式过滤掉 - 如果你知道单词是用空格分隔的,只需使用string.split('');

答案 2 :(得分:0)

从开头

小写字符串
string.toLowerCase().replace(...

答案 3 :(得分:0)

或者,您可以使用Array#map将单词数组映射到小写字符串。

console.log(words.map(function(word) { return word.toLowerCase(); }).join(', '));

答案 4 :(得分:0)

您可以使用toLowerCase的{​​{1}}方法首先将字符串转换为小写字母,然后对字符串执行您需要执行的所有操作。

例如:string