2013-03-17 201 views
0

我目前的正則表達式格式只允許數字,包括正數,負數和浮點數。美元和逗號的正則表達式格式

"regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, 

如何允許(添加)美元和逗號在我目前的正則表達式格式?

更新:

HTML

<input type="text" name="amt[]" placeholder="0.00" size="10" id="validation-required" 
    class="input-unstyled input-sep validate[required, custom[price]]"> 

jQuery驗證

(function($){ 
    $.fn.validationEngineLanguage = function(){ 
    }; 
    $.validationEngineLanguage = { 
     newLang: function(){ 
      $.validationEngineLanguage.allRules = { 
       "required": { // Add your regex rules here, you can take telephone as an example 
        "regex": "none", 
        "alertText": "* This field is required", 
        "alertTextCheckboxMultiple": "* Please select an option", 
        "alertTextCheckboxe": "* This checkbox is required", 
        "alertTextDateRange": "* Both date range fields are required" 
       }, 
       "dateRange": { 
        "regex": "none", 
        "alertText": "* Invalid ", 
        "alertText2": "Date Range" 
       }, 
       "dateTimeRange": { 
        "regex": "none", 
        "alertText": "* Invalid ", 
        "alertText2": "Date Time Range" 
       }, 
       "minSize": { 
        "regex": "none", 
        "alertText": "* Minimum ", 
        "alertText2": " characters allowed" 
       }, 
       "maxSize": { 
        "regex": "none", 
        "alertText": "* Maximum ", 
        "alertText2": " characters allowed" 
       }, 
           "groupRequired": { 
        "regex": "none", 
        "alertText": "* You must fill one of the following fields" 
       }, 
       "min": { 
        "regex": "none", 
        "alertText": "* Minimum value is " 
       }, 
       "max": { 
        "regex": "none", 
        "alertText": "* Maximum value is " 
       }, 
       "past": { 
        "regex": "none", 
        "alertText": "* Date prior to " 
       }, 
       "future": { 
        "regex": "none", 
        "alertText": "* Date past " 
       },  
       "maxCheckbox": { 
        "regex": "none", 
        "alertText": "* Maximum ", 
        "alertText2": " options allowed" 
       }, 
       "minCheckbox": { 
        "regex": "none", 
        "alertText": "* Please select ", 
        "alertText2": " options" 
       }, 
       "equals": { 
        "regex": "none", 
        "alertText": "* Fields do not match" 
       }, 
       "creditCard": { 
        "regex": "none", 
        "alertText": "* Invalid credit card number" 
       }, 
       "phone": { 
        // credit: jquery.h5validate.js/orefalo 
        "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, 
        "alertText": "* Invalid phone number" 
       }, 
       "email": { 
        // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ 
        "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, 
        "alertText": "* Invalid email address" 
       }, 
       "integer": { 
        "regex": /^[\-\+]?\d+$/, 
        "alertText": "* Not a valid integer" 
       }, 
       "price": { 
        // Number, including positive, negative, and floating decimal. credit: orefalo 
        "regex": /^[\-\+]?(([0-9]+)([\.,]([0-9]+))?|([\.,]([0-9]+))?)$/, 
        "alertText": "* Invalid floating decimal number" 
       }, 
       "date": { 
        "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, 
        "alertText": "* Invalid date, must be in YYYY-MM-DD format" 
       }, 
       "ipv4": { 
        "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, 
        "alertText": "* Invalid IP address" 
       }, 
       "url": { 
        "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i, 
        "alertText": "* Invalid URL" 
       }, 
       "onlyNumberSp": { 
        "regex": /^[0-9\ ]+$/, 
        "alertText": "* Numbers only" 
       }, 
       "onlyLetterSp": { 
        "regex": /^[a-zA-Z\ \']+$/, 
        "alertText": "* Letters only" 
       }, 
       "onlyLetterNumber": { 
        "regex": /^[0-9a-zA-Z]+$/, 
        "alertText": "* No special characters allowed" 
       }, 
       // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings 
       "ajaxUserCall": { 
        "url": "ajaxValidateFieldUser", 
        // you may want to pass extra data on the ajax call 
        "extraData": "name=eric", 
        "alertText": "* This user is already taken", 
        "alertTextLoad": "* Validating, please wait" 
       }, 
           "ajaxUserCallPhp": { 
        "url": "phpajax/ajaxValidateFieldUser.php", 
        // you may want to pass extra data on the ajax call 
        "extraData": "name=eric", 
        // if you provide an "alertTextOk", it will show as a green prompt when the field validates 
        "alertTextOk": "* This username is available", 
        "alertText": "* This user is already taken", 
        "alertTextLoad": "* Validating, please wait" 
       }, 
       "ajaxNameCall": { 
        // remote json service location 
        "url": "ajaxValidateFieldName", 
        // error 
        "alertText": "* This name is already taken", 
        // if you provide an "alertTextOk", it will show as a green prompt when the field validates 
        "alertTextOk": "* This name is available", 
        // speaks by itself 
        "alertTextLoad": "* Validating, please wait" 
       }, 
           "ajaxNameCallPhp": { 
          // remote json service location 
          "url": "phpajax/ajaxValidateFieldName.php", 
          // error 
          "alertText": "* This name is already taken", 
          // speaks by itself 
          "alertTextLoad": "* Validating, please wait" 
         }, 
       "validate2fields": { 
        "alertText": "* Please input HELLO" 
       }, 
        //tls warning:homegrown not fielded 
       "dateFormat":{ 
        "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$|^(?:(?:(?:0?[13578]|1[02])(\/|-)31)|(?:(?:0?[1,3-9]|1[0-2])(\/|-)(?:29|30)))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(?:(?:0?[1-9]|1[0-2])(\/|-)(?:0?[1-9]|1\d|2[0-8]))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(0?2(\/|-)29)(\/|-)(?:(?:0[48]00|[13579][26]00|[2468][048]00)|(?:\d\d)?(?:0[48]|[2468][048]|[13579][26]))$/, 
        "alertText": "* Invalid Date" 
       }, 
       //tls warning:homegrown not fielded 
           "dateTimeFormat": { 
         "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])\s+(1[012]|0?[1-9]){1}:(0?[1-5]|[0-6][0-9]){1}:(0?[0-6]|[0-6][0-9]){1}\s+(am|pm|AM|PM){1}$|^(?:(?:(?:0?[13578]|1[02])(\/|-)31)|(?:(?:0?[1,3-9]|1[0-2])(\/|-)(?:29|30)))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^((1[012]|0?[1-9]){1}\/(0?[1-9]|[12][0-9]|3[01]){1}\/\d{2,4}\s+(1[012]|0?[1-9]){1}:(0?[1-5]|[0-6][0-9]){1}:(0?[0-6]|[0-6][0-9]){1}\s+(am|pm|AM|PM){1})$/, 
        "alertText": "* Invalid Date or Date Format", 
        "alertText2": "Expected Format: ", 
        "alertText3": "mm/dd/yyyy hh:mm:ss AM|PM or ", 
        "alertText4": "yyyy-mm-dd hh:mm:ss AM|PM" 
        } 
      }; 

     } 
    }; 

    $.validationEngineLanguage.newLang(); 

})(jQuery); 
+2

可我們這裏集中的評論上解決問題,而不是關於這是否是一個真正的問題或沒有,這煩人的「你嘗試過什麼」口水仗廢話。 – Kev 2013-03-17 15:45:58

+1

@Kev出於興趣:我沒有嚴格遵循meta ......何時/哪裏有「你試過什麼」被宣佈爲廢話? – Tomalak 2013-03-17 16:04:05

+0

@Tomalak - 如果問一些建設性的問題,其中一兩個也許可以,但是我刪除的評論會降低成噪音。 – Kev 2013-03-17 16:08:34

回答

1

「正則表達式」:/^[-+]?(([0-9]+)(.,)?|(.,)?)$/,

您當前的正則表達式是有點過-複雜。我知道你想要匹配一個可選的美元符號,然後是一個千位數,可選地帶有兩位小數。我假設你實際上不需要+-符號,並且只需要小數點,而且它們只是從某些教程中複製粘貼的內容開始。

試試這個:

/^\$?[1-9]\d?(?:,\d{3})*(?:\.\d{2})?$/ 

Explanation of this Regex

+0

這不是來自某個教程或者不是複製粘貼。其實,這是我老闆買的模板。我害怕破壞代碼,因爲它在系統中全面使用,這就是爲什麼我在這裏問這個問題。謝謝你,現在它工作。 – catherine 2013-03-17 16:06:37

3

如果你想保留的字符,如$^等在你的正則表達式匹配,只是轉義帶有反斜槓,例如\$

+0

這解決了我關於美元+1的問題。那逗號呢? – catherine 2013-03-17 15:50:13

+1

逗號沒有特別的意義。只要將它添加到你想允許的地方即可。這就是說,它看起來像你的正則表達式已經允許他們... – 2013-03-17 15:50:42

+0

我不能把'\,'因爲逗號只會出現在每3個數字後面。是對的嗎? – catherine 2013-03-17 15:51:33