簡體   English   中英

將C#正則表達式轉換為JavaScript正則表達式

[英]Converting C# regular expression to JavaScript regular expression

我已經在模型驗證中使用的C#中創建了一個正則表達式。 我也需要JavaScript。 請幫我轉換。

這是C#中的正則表達式

[Required]
[Display(Name = "Cost")]
[DataType(DataType.Currency)]
[RegularExpression(@"^(([a-zA-Z]+)|(\d{0,15}.\d{0,2}))$", ErrorMessage = "Cost can not have more than 2 decimal places.")]
[Range(typeof(Decimal), "0.01", "99999999999999.99", ErrorMessage = "{0} must be a decimal/number greater than 0 and less than 100000000000000.")]
public Nullable<decimal> Cost { get; set; }

還有另一條驗證消息“字段必須是數字”

我正在javascript中嘗試這樣

var regExp = new RegExp("(([a-zA-Z]+)|(\d{0,15}.\d{0,2}))");
var res = regExp.test($('#Cost').val());

但這總是返回true

謝謝

如果您要嘗試驗證費用必須包含2個小數位,請在正則表達式中刪除與任何字母字符串匹配的“或”部分:

^(\d{0,15}\.\d{0,2})$

注意:您也不需要括號,因為您在這里不會對捕獲的值做任何事情。

您提到的正則表達式也將在C#中失敗,但是由於您的Range屬性,您會感到它起作用的錯覺。

最后,如果您使用的是new Regexp語法,則需要轉義斜線:

var re = new RegExp("^\\d{0,15}\\.\\d{0,2}$");

// or using shorter JS syntax
var re = /^\d{0,15}\.\d{0,2}$/;

樣品運行:

console.log(re.test("abc"));  // false
console.log(re.test("10.23"));  // true
console.log(re.test("10"));  // false

為了避免出現問題,請使用JavaScript語法,並且如上所述,您應該轉義小數點( \\. )或也使用[\\.,]來匹配逗號(給定的示例也將匹配123W4 ):

var regExp = /(([a-zA-Z]+)|(\d{0,15}\.\d{0,2}))/;

暫無
暫無

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

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