簡體   English   中英

如何將字符串作為正則表達式模式傳遞?

[英]How to pass string as regular expression pattern?

在這里有人問過同樣的問題: 如何將正則表達式作為函數參數傳遞 ,我嘗試這樣做:

 <!DOCTYPE html>
  <html>
    <head>
     <meta charset="UTF-8">
     <title>Insert title here</title>
        <script type="text/javascript">
             function validate(value, regexp){
                   //escape special characters
                   var regexp = regexp.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').replace(/\x08/g, '\\x08');
                  return new RegExp(regexp,'g').test(value);
             }
       </script>
   </head>
   <body>
      <script>
           var regexp = "^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$";
           alert(validate("alex@domain.com",regexp))
      </script>
  </body>
</html>

但是它不起作用,並且我確定模式字符串正確,並且已經在螢火蟲中對其進行了如下測試:

/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test("test@domain.com")

正確匹配了電子郵件。因此,請告訴我我犯了什么錯誤。

您需要將\\再次轉義,同時在定界符中輸入"

var regexp = "^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";

要么

var regexp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM