JavaScript和正则表达式的问题
我正在尝试获取YouTube链接,并获取它的Id(这很好)。我正在尝试创建一个函数来检测输入的文本是URL还是Id。如下所示:JavaScript和正则表达式的问题,javascript,html,regex,Javascript,Html,Regex,我正在尝试获取YouTube链接,并获取它的Id(这很好)。我正在尝试创建一个函数来检测输入的文本是URL还是Id。如下所示: function youtube_do(video, width, height) { var make_syntax; var regexp_url; regexp_url = /((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)/; if(regexp_url.test(video) = false) {
function youtube_do(video, width, height) {
var make_syntax;
var regexp_url;
regexp_url = /((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)/;
if(regexp_url.test(video) = false) {
make_syntax = embed_format(youtube_id_extract(video), width, height);
} else {
make_syntax = embed_format(video, width, height);
}
document.writeln(make_syntax);
}
然后像这样执行它:
<script type="text/javascript" src="js/YouTube.js"></script>
<h1>YouTube Example</h1>
<script type="text/javascript">
youtube_do("http://www.youtube.com/watch?v=VMl_71dqeR8", "640", "390");
</script>
regexp_url = /(mailto:|(news|(ht|f)tps?):\/\/)\S+/;
YouTube示例
youtube_do(“http://www.youtube.com/watch?v=VMl_71dqeR8", "640", "390");
当我在浏览器中尝试时,我什么也没有得到,所以我开始调试,我得到了以下错误:
YouTube.js:22-语法错误:解析错误YouTube.htm:5-引用错误:找不到变量:YouTube\u do
其中22正好是
if
语句的行。我应该怎么做才能纠正这个问题?你需要做regexp\u url.test(video)==false
notregexp\u url.test(video)=false
:)几点:
1) 正则表达式无效,因为它包含斜杠。这将给出一个错误。你需要逃离这些伤痕
2) 正则表达式中的{1}
是多余的-如果不指定量词,则隐含{1}。这不会给出错误,但为了清楚起见,您应该忽略它
3) 不必在正则表达式中转义:
。这不会产生错误,但不必要的转义会降低可读性,因此应该删除不必要的反斜杠
4) 正则表达式中有不必要的括号。这不会给出错误,但会使读取变得更困难,因此应将其删除
在进行这些更改后,该行如下所示:
<script type="text/javascript" src="js/YouTube.js"></script>
<h1>YouTube Example</h1>
<script type="text/javascript">
youtube_do("http://www.youtube.com/watch?v=VMl_71dqeR8", "640", "390");
</script>
regexp_url = /(mailto:|(news|(ht|f)tps?):\/\/)\S+/;
5) 操作员=
也执行赋值。这将给出一个错误。如果(!…),则应使用:
if (!regexp_url.test(video))
第22行应改为:
if(regexp_url.test(video) === false) {
=用于赋值。
==将值与类型转换进行比较。
==比较值和类型
您也可以将第22行改写为:
if(!regexp_url.test(video)) {
为了避免将来关于正则表达式验证的任何麻烦,为什么不与在线测试人员核对一下呢?
更多网址,请点击谷歌:)