我想在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
答案 0 :(得分:1)
要捕捉两个单词之间的任何内容,您可以使用:
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;
它使用positive lookahead and lookbehind
来实现这一目标。