2013-03-17 200 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