40005


正規表現のビギナーです。分かっていると思えるのは、\bが最初と最後のスペースだけマッチ。/gがグローバルで、一つだけではなく全てマッチする。\wがA-Z,a-z,0-9,_をマッチ。

理解が少し進んだのか、今のところアポストロフィをマッチングするための表現が合っていれば[\']?を入れる場所です。

しかしとすると、var arr = str.match(/\b(\w+|\')\b/g);

[ 'Hell', '\'', 'o', 'World' ]と出力します。

結果として出したいのは['Hell'o', 'World']です。

[code]

    function countWords(str) {
      var count = 0;
      var arr = str.match(/\b(\w+)[^']\b/g);
      for(var i = 0; i < arr.length; i++){
        if(arr[i] != ""){
          count++;
        }
      }
      return count;
    }
    countWords("Hell'o　World ")
[/code]


CC BY-SA 3.0
2017-12-03T11:57:01.970
40000
2017-12-03T15:48:08.677
2017-12-03T15:44:28.640
2383
25766
question
javascript 正規表現
正規表現 アポストロフィも文字列の一部としてマッチしたい。

[code]

    str.match(/[\w']+/g);
    
[/code]

これで良いような気がします。

半角スペースをデリミタとしてmatchしたいのであれば

[code]

    str.match(/\S+/g);
    
[/code]

でも良い気がします。


CC BY-SA 3.0
2017-12-03T15:41:12.767
40005
2017-12-03T15:48:08.677
2017-12-03T15:48:08.677
2383
2383
40000
answer