Как заставить регулярное выражение javascript соответствовать любому символу и возврату каретки? - PullRequest
0 голосов
/ 18 января 2019

У меня есть HTML-файл, как показано ниже.

  <body>  
    <p>Enter your phone number with area code and then click 
        Check The expected format is like</p>
    <form action="#">  
      <input id="phone"><button onclick="testInfo(document.getElementById('phone'));">Check</button>
    </form>  
  </body>  
</html>

Я использую приведенный ниже скрипт, который может напечатать правильный результат.

fs.readFile('test.html', 'utf8', function (err, data) {
    var re = /<p>[a-zA-Z1-9\s\r\n]*<\/p>/i;
    var myArray = data.match(re);
    console.log(myArray);
});

результат: '<p>Enter your phone number with area code and then click \r\n Check The expected format is like</p>'

Но я хочу использовать регулярное выражение, как показано ниже.

re = /<p>[.\r\n]*<\/p>/i;

Но оно печатает ноль.Как это исправить?Почему я не могу использовать . для замены a-zA-Z1-9\s спасибо.

1 Ответ

0 голосов
/ 18 января 2019

Причина в том, что точка в классе символов ([...]) теряет свои "суперспособности", то есть это только точка.
Возможно, вы захотите re = /<p>[\s\S]+?<\/p>/i;, но имейте в виду, что не рекомендуется анализировать структуры HTML с помощью регулярного выражения:

let html = ` <body>  
    <p>Enter your phone number with area code and then click 
        Check The expected format is like</p>
    <form action="#">  
      <input id="phone"><button onclick="testInfo(document.getElementById('phone'));">Check</button>
    </form>  
  </body>  
</html>`;

re = /<p>[\S\s]+?<\/p>/i;
var myArray = html.match(re);
console.log(myArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...