正規表現 アポストロフィも文字列の一部としてマッチしたい。


正規表現のビギナーです。分かっていると思えるのは、\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]



[code]

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

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

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

[code]

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

でも良い気がします。



[code]

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

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

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

[code]

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

でも良い気がします。

