2017-02-09 5 views
-1

я работаю на веб-сайте, и я, нуждающихся в помощи с кодом, который будет оценивать истинное значение, если URL являетсяURL Детектирование с помощью регулярных выражений

stackoverflow.com/users/anytext

но не когда URL является

stackoverflow.com/users/

Вот мой код:

<style> 
 
.hidden { 
 
    display: none; 
 
}
<body> 
 
    <div style = 'height:200px; width:200px; background-color: blue;' class = 'testbox' id = 'testbox'></div> 
 
    <script> 
 
     function storeurl() { 
 
      var testbox = document.getElementById('testbox'); 
 
      varurl = document.URL; // it should be Global variable, so remove var 
 
     \t 
 
      
 
      if (varurl == 'file:///C:/Users/laptop%202/Desktop/test.html') { /* Need this to detect the url */ 
 
       if(!testbox.classList.contains('hidden')){ 
 
     \t \t  testbox.classList.add("hidden"); 
 
     \t \t }; 
 
     \t } 
 
      else { 
 
     \t  return varurl; 
 
     \t }; 
 
     }; 
 
    
 
     document.onclick = storeurl; 
 
    </script> 
 
</body>

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

+0

'/stackoverflow\.com\/users \ /.+/. Test (url)' – dandavis

ответ

0

Вы можете использовать следующее регулярное выражение:

stackoverflow\.com\/users\/[^\s]+$ 
  • Вам нужно экранировать специальные символы, такие как . и /
  • [^s] соответствует ничего, кроме пробельных символов. Кроме того, можно использовать что-нибудь здесь .
  • + матчей по крайней мере один из предыдущего символа (здесь [\s])
  • $ конца строки

Вот пример в JavaScript:

var regex = /stackoverflow\.com\/users\/[^\s]+$/ 
 
var text1 = "http://stackoverflow.com/users/"; 
 
var text2 = "http://stackoverflow.com/users/anything"; 
 

 
console.log(!!text1.match(regex)); 
 
console.log(!!text2.match(regex));

+0

Большое вам спасибо! это очень информативно. У меня возникают проблемы с тем, чтобы он работал так, как я хочу. В основном то, что я пытаюсь сделать, это захватить текущий url и сравнить их в выражении if. если URL-адрес, например, stackoverflow/faculty/anytext, он скроет элемент. но если это просто stackoverflow/faculty/он покажет его –

+0

Вы можете использовать 'if (!! url.match (regex)) {// hide}' или 'if (regex.test (url)) {// hide }} ', тогда как url ​​определяется как' window.location.href'. Или с какой частью у вас проблемы? –

1

без использования регулярных выражений:

var url = "http://stackoverflow.com/users/"; 
 

 
var test1 = "http://stackoverflow.com/users/anything"; 
 
var test2 = "http://stackoverflow.com/users/"; 
 

 
console.log(test1.length > url.length && test1.startsWith(url)); 
 
console.log(test2.length > url.length && test2.startsWith(url));

(но, возможно, не столь гибкий, как и при использовании регулярных выражений ....)

Ура!

Смежные вопросы