Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数组分组为两个字,而不是一个字_Javascript_Regex - Fatal编程技术网

Javascript 将数组分组为两个字,而不是一个字

Javascript 将数组分组为两个字,而不是一个字,javascript,regex,Javascript,Regex,下面的代码:当一个单词被写入时,它将其存储为自己的数组,这意味着每个单词都是自己的数组,然后检查是否再次出现 我想要的是:我不希望它创建一个单词数组(在空格键被点击后),而是希望它在写了两个单词后再创建 IE:而不是我写“Hello”+空格键,代码创建“Hello”作为数组。我希望它等到我写了“hello my”+空格键,然后用这两个数字创建一个数组 我猜这和正则表达式有关吗? 我尝试过很多不同的方法(有点新手),但我不明白如何将两个单词组合在一起,而不是一个单词 const count =

下面的代码:当一个单词被写入时,它将其存储为自己的数组,这意味着每个单词都是自己的数组,然后检查是否再次出现

我想要的是:我不希望它创建一个单词数组(在空格键被点击后),而是希望它在写了两个单词后再创建

IE:而不是我写“Hello”+空格键,代码创建“Hello”作为数组。我希望它等到我写了“hello my”+空格键,然后用这两个数字创建一个数组

我猜这和正则表达式有关吗? 我尝试过很多不同的方法(有点新手),但我不明白如何将两个单词组合在一起,而不是一个单词

  const count = (text) => {

    const wordRegex = new RegExp(`([\\p{Alphabetic}\]+)`, 'gu');
    let result;
    const words = {};
    while ((result = wordRegex.exec(text)) !== null) {
      const word = result[0].toLowerCase();
      if (!words[word]) {
        words[word] = [];
      }
      words[word].push(result.index);
      words[word].push(result.index + word.length);
    }
    return words;
  };
你可以用

const wordRegex = /\p{Alphabetic}+(?:\s+\p{Alphabetic}+)?/gu;
详细信息

  • \p{字母}+
    -1+字母字符
  • (?:\s+\p{字母}+)
    -可选的序列:
    • \s+
      -1+空格
    • \p{字母}+
      -1+字母字符
第二个单词可以选择性地匹配,以便最后一个奇数单词也可以匹配

请参见下面的JS演示:

const count=(文本)=>{
const wordRegex=/\p{字母}+(?:\s+\p{字母}+)/gu;
让结果;
常量字={};
while((result=wordRegex.exec(text))!==null){
const word=result[0]。toLowerCase();
如果(!单词[单词]){
单词[单词]=[];
}
words[word].push(result.index);
words[word].push(result.index+word.length);
}
返回单词;
};

log(count(“abc def ghi”)
Try
const wordRegex=/\p{alphatic}+(?:\s+\p{alphatic}+)/gu是否可以将其转换为新的RegExp对象?正如在后面的代码中一样,它使用该对象的函数
wordRegex
在这里是一个RegExp对象。这里不需要构造函数,因为它是一个静态模式,它不是由任何变量组成的。我认为它可以工作!你能给我解释一下吗?:)最后一个问题:将单词分组为3而不是2?@CevinThomas Replace
(这实际上等于
{0,1}
),最后是
{0,2}
。非常感谢!我非常感激!