Javascript Regex - 从句子

时间:2018-06-14 19:21:33

标签: javascript regex

我想在javascript中为youtube创建简单的AI。我想写入输入字符串,如"在youtube上查找恶作剧"。那个词" Prank"是变数......每个人都可以写任何想要的东西,但它必须是句子"找到'某些东西'在youtube"。我试图创建正则表达式,但这对我来说很难。这样做是否可行?

我尝试的正则表达式是:\\Find\s\[abc]\s\\on\\youtube/i;

HTML代码:

<input type="text" id="uq" class="input auto-size"/>
<button id="button" onclick="question();" class="button" href="javascript:;">Ask</button>

Javascript代码:

function question()
    const findonyoutube = /(?<=find)(.*)(?=on youtube)/gm;
    var str = document.getElementById('uq').value;
    if(findonyoutube.test(str))
    {
    alert(findonyoutube.exec(str)[0]);
    }
}

不工作,返回Uncaught TypeError: Cannot read property '0' of null

1 个答案:

答案 0 :(得分:1)

要捕捉两个单词之间的任何内容,您可以使用:

&#13;
&#13;
function getVariable() {
  const regex = /(?<=Find)(.*)(?=on youtube)/i;
  let input = document.getElementById('myInput').value;
  let match = regex.exec(input);
  if(match) {
    document.getElementById('debug').innerHTML = match[0];
    return match;
  } else {
    return -1;
  }  
}
&#13;
<h4>Example: Find ponies on youtube</h4>
<input type="text" id="myInput" />
<button onclick="getVariable();">Get Variable</button>
<br><br><hr>
<h3 id="debug"></h3>
&#13;
&#13;
&#13;

它使用positive lookahead and lookbehind来实现这一目标。