js中的正则表达式比较

时间:2017-02-10 18:42:12

标签: javascript

<!DOCTYPE html>
<html>
 <head>
   <title>hhh</title>
 </head>
<body>
  <input type="text" id="fname" onkeyup="myFunction()">

 <script>
  function myFunction() {
  var re1 =/./;
  var x = document.getElementById("fname");
  if(x.value==re1){
  var h = document.createElement("H1");
  var t = document.createTextNode(x.value);
  h.appendChild(t);
  document.body.appendChild(h);}

  else if (x.value=="## a"){
  var h = document.createElement("H2");
  var t = document.createTextNode(x.value);
  h.appendChild(t);
  document.body.appendChild(h);}
 }
 </script>

 </body>

javascript中的代码,我尝试将x.value与regexp进行比较不起作用。我试图从头开始制作一个降价编辑器。请帮助我将(#string)与x.value进行比较,然后将其输出为H1标题。 当H2输入(#a)时,H2部分有效。

3 个答案:

答案 0 :(得分:1)

你可以尝试:

if (x.match(/ ./g))

if (x.match(rel))

答案 1 :(得分:0)

通过使用if (x.value==re1),您试图比较字符串和RegExp对象的相等性,它始终为false。而是使用RegExp对象的.test()方法:

if (re1.test(x.value))

(见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

RegExp.prototype.test()在你的情况下将比使用String.prototype.match()更好地执行,因为后者(不必要地)计算并返回字符串中已识别匹配的数组,当你需要知道的时候是否有匹配。

答案 2 :(得分:-2)

您正在针对regexp对象检查字符串,因此您需要类似以下内容来检查RegExp对RegExp:

if(new RegExp(x.value) === re1){
    // Match
}
相关问题