我需要添加一些验证,该验证将只允许字符串中可能包含空格的大写字母。大写字母可以在字符串中的任何位置,但只能使用一次或根本不使用。

我打算将下面的解决方案作为一条单独的规则合并,但是我对此进行了验证,想知道是否可以对其进行调整以获得所需的结果:

// Validate Sentence Case
if(dataEntryCaseId.toString().match("4")){
    var newValue = toTitleCase(value);
    if(newValue != value){
        for(var x = 1, j = value.length; x < j; x++){
            if(value.charAt(x) != newValue.charAt(x)){
                valid = false;
                $("#text_10").attr({"value":$("#text_10").attr("value").replace(value.charAt(x), "")});
                finalVal = finalVal.replace(value.charAt(x), "");
            }
        }
    }
}


if(!valid){
    for(var x = 0, j = styleNoteJsonData.styleGroupNote.length; x < j; x++){
        if(styleNoteJsonData.styleGroupNote[x].styleName == styleGroupName){
            alert(styleNoteJsonData.styleGroupNote[x].styleNote);
            $(".styleNote").addClass("alertRed");
            SendErrorMessage(styleNoteJsonData.styleGroupNote[x].styleNote);
        }
    }

最佳答案

"this is A way to do it with regex".match(/^[^A-Z]*[A-Z]?[^A-Z]*$/)


正则表达式像这样分解...

字符串(^)的开头,然后是非大写字母([^A-Z])零次或多次(*),然后是可选(?)大写字母([A-Z]),然后是非大写字母()零次或多次([^A-Z]),后跟字符串结尾(*



编辑:基于@IAbstractDownvoteFactory的想法的更简单的方法

var string = "This is a simple way to do it"

// match all capital letters and store in array x
var x = string.match(/[A-Z]/g)

// if x is null, or has length less than 2 then string is valid
if(!x || x.length < 2){
    // valid
} else {
    // not valid
}


正则表达式匹配所有大写字母,并返回匹配项数组。数组的长度是有多少个大写字母,因此小于2的返回true。

关于javascript - javascript验证-仅允许使用一个大写字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7366817/

10-11 01:12