Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.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_Html_Regex - Fatal编程技术网

JavaScript和正则表达式的问题

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) {

我正在尝试获取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) {
    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
not
regexp\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)) {

为了避免将来关于正则表达式验证的任何麻烦,为什么不与在线测试人员核对一下呢?

更多网址,请点击谷歌:)