簡體   English   中英

正則表達式不起作用,因為模式是字符串

[英]Regular Expression is not working due to the pattern is string

我正在使用一個框架,其中框架的正則表達式是以String形式出現的,例如var regex = "/^0(9|4)\\d{8}$/"; 當我嘗試工作時,我無法進行此工作,有什么方法可以將字符串轉換為正常的RegEx https://plnkr.co/edit/Yjch7G7npkHmtKYDF5Yc?p=preview

當我嘗試使用此新RegExp將我的expresiion更改為

/^0(9|4)d{8}$/

這個

/\/^0(9|4)d{8}$\//

由於這種轉換

new RegExp($(element).attr("data-regex")); = /\/^0(9|4)d{8}$\//

閱讀代碼后,我認為這應該為您展示解決方案的核心

 function strToRegExp(str) { var split = str.split('/'); var flags = split.pop(); var discard = split.shift(); return new RegExp(split.join('/'), flags); } document.querySelectorAll('.test').forEach(div => console.log(strToRegExp(div.textContent).test('0912345678')) ); 
 <div class='test'>/(09|04)\\d{8}/g</div> <div class='test'>/^0(9|4)\\d{8}$/</div> 

您在評論中提到了數據屬性

因此,這會稍微改變代碼

 function strToRegExp(str) { var split = str.split('/'); var flags = split.pop(); var discard = split.shift(); return new RegExp(split.join('/'), flags); } document.querySelectorAll('.test').forEach(div => console.log(strToRegExp(div.dataset.regexp).test('0912345678')) ); 
  <div class='test' data-regexp='/(09|04)\\d{8}/g'>Test 1</div> <div class='test' data-regexp='/^0(9|4)\\d{8}$/'>Test 2</div> 

現在我只是看了plunkr javaascript FFS!

var regex =new RegExp("/^0(9|4)\d{8}$/");
var regex2 = new RegExp("/(09|04)\d{8}/g");

應該

var regex = new RegExp("^0(9|4)\\d{8}$");
var regex2 = new RegExp("(09|04)\\d{8}", "g");

甚至

var regex = /^0(9|4)\d{8}$/;
var regex2 = /(09|04)\d{8}/g;

您可以使用RegExp構造函數 ,然后使用.test()方法

 var regex = "/^0(9|4)\\d{8}$/"; regex = regex.substring(1, regex.length-1); console.log(regex); var patt = new RegExp(regex, "g"); var res = patt.test("04dddddddd"); console.log(res); 

嘗試刪除雙引號並替換為html編碼字符。 這樣,JavaScript不會在語言解釋中使用雙引號。

嘗試使用ascii值&#34; ”,也可以使用&quot;

擺脫" ,您的表情應該像這樣

var regex =new RegExp(/^0(9|4)\d{8}$/);
var regex2 = new RegExp(/(09|04)\d{8}/g);

暫無
暫無

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

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