2013-05-20 29 views
21

如何在TypeScript中實現Regexp?TypeScript中的RegExp

我的例子:

var trigger = "2" 
var regex = new RegExp('^[1-9]\d{0,2}$', trigger); // where I have exeption in Chrome console 

回答

22

我想你想test在打字稿的正則表達式,所以你必須這樣做:

var trigger = "2", 
    regexp = new RegExp('^[1-9]\d{0,2}$'), 
    test = regexp.test(trigger); 
alert(test + ""); // will display true 

你應該閱讀MDN Reference - RegExp,該RegExp對象接受兩個參數patternflags可以爲空(可以省略/未定義)。要測試您的正則表達式,您必須使用.test()方法,而不是在您的RegExp聲明中傳遞想要測試的字符串!

爲什麼test + "" 因爲TS中的alert()接受一個字符串作爲參數,所以最好這樣寫。你可以嘗試完整的代碼here

+0

如果VAR觸發= 「10」,正則表達式=新的RegExp( '^ [1-9] \ d {0,2} $'),測試= regexp.test(trigger); alert(test +「」);警告返回false,這是不正確的 – zrabzdn

+0

用你的當前正則表達式模式替換:''^([0-9] \ d {0,2})+ $'' –

+2

由於您是從字符串創建RegExp對象,新的RegExp('^ [1-9] \\ d {0,2} $')'或使用正則表達式文字符號:'/^[1-9] \ d {0, 2} $ /' –

11

你可以這樣做:

var regex = /^[1-9]\d{0,2}$/g 
regex.test(2) // outputs true 
+0

這似乎不適用於打字稿(至少2.1版) – ghostbust555

+0

看起來RegExp.test的簽名確實發生了變化(或正確地轉換爲https://developer.mozilla.org/en-US/ docs/Web/JavaScript/Reference/Global_Objects/RegExp/test),其中測試方法現在需要一個字符串。感謝您指出 – sebas2day

-1
let pattern=new RegExp("^-?[0-9]+(\.[0-9]+)?") 
result=pattern.isMatch("hi") //returns false