2016-11-25 73 views
2

我試圖匹配代碼塊來檢查是否是html或javascript代碼,我試過這樣做,但我有問題,而當這個html元素"<div></div>"或php <? echo '';>裏面的JavaScript代碼將它匹配爲html元素。識別代碼標籤之間的代碼是JavaScript還是HTML

請有人可以幫助我最好的方式來存檔這個?

<script> 
$(document).ready(function(){ 
    function AssignLang(theLanguage){ 
    var regex = /(&lt;([^&gt;]+)&gt;|<([^>]+)>)/ig; 
    //var regex = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>"; 
     if(theLanguage.match(regex)){ 
      var lang = 'markup'; 
     }else{ 
      var lang = 'javascript'; 
     } 
     return lang; 
    } 

     $('pre code').each(function() { 
     var the = $(this).html(); 
     /*I tried here to match from 0 to 50 but is not going to help because if the javascript tag begin with <script> still show as html 
     var theLanguage = the.replace(/\s/g, '').substring(0,50); 
     */ 
     var theLanguage = the.replace(/\s/g, ''); 
       var langType = AssignLang(theLanguage); 
       $(this).addClass("fullcoded language-"+langType); 
     alert(theLanguage+"-"+langType); 
     }); 
    }); 
</script> 

這裏我匹配碼前和代碼元素

 <pre><code> 
      function check() { 
    var delvar = "<? $_POST["del"]; ?>"; 
    var answer = confirm("Are you sure you want to delete the article?") 
    if (answer) { 
     window.location = "adm-site.php?del=" + delvar + "&delete=true"; 
    } 
} 
     </code></pre> 


<pre><code> 
<select name="del"> 
<option value="none" SELECTED></option>all articles echo'ed here by php 
</select> 
</code></pre> 

這裏內部是https://jsfiddle.net/ppu9qw3n/

+0

請確實需要幫助,我一直在做這個,謝謝4個小時 –

+1

可能重複[RegEx match open tags not except XHTML self-contained tags](http://stackoverflow.com/questions/ 1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –

+0

@ Mr.George請讓我搜索解決方案,但是我真的不需要幫助 –

回答

0

此一條鏈路我使用/\w+\s\w+\(\)/i
\ W +匹配1個或更多的正則表達式az,AZ,0-9 and _
\ s matches 1 space
\(and \)matches()

基本上我在代碼標籤之間的代碼中尋找由function functionName()組成的模式。如果找到匹配,那麼它就是JavasScript代碼,否則就是HTML代碼。

這是如何實現JavaScript的:

$(document).ready(function(){ 
    var regex = /\w+\s\w+\(\)/i; 
    $('pre code').each(function() { 
     var v = $(this).html(); 
     if(regex.test(v)){ 
      alert(v+'-'+'THIS IS JAVASCRIPT CODE') 
     } 
     else{ 
      alert(v+'-'+'THIS IS HTML CODE') 
     } 
    }); 
}); 

檢查它在這裏的jsfiddle。它正在工作。 https://jsfiddle.net/swzaf5r1/

+0

這工作得很好 –

+0

我爲你做了,因爲你曾經努力過:)。我刷新了一些JavaScript,我學到了這一點:) – MYGz