Как обновить регулярное выражение, чтобы разрешить пустое значение или буквенно-цифровой только - PullRequest
1 голос
/ 06 июля 2019

Я пытаюсь изменить регулярное выражение, чтобы оно допускало пустое значение или только буквенно-цифровые символы.

В настоящее время у меня есть это, но оно проверяет только буквенно-цифровые значения

if (ruletype eq "alphanumeric") {
    bMatch = true;
    variables.fieldName = listGetAt(arguments.rules[nRow],2,",");
    if (structKeyExists(arguments.form, "#variables.fieldName#")){
        if (NOT RefindNoCase("[[:alnum:]]",arguments.form[variables.fieldName])) {
            lstError = listAppend(lstError,nRow,",");
        }
    } else {
        lstError = listAppend(lstError,nRow,",");
    }
}

Я пыталсяпреобразование в матч-реванш, чтобы найти empty value, но также принимает значение 1234^%^&&, которое содержит специальные символы.Я не уверен, как это исправить.

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

Правильно ли я понимаю из значения, которое вы упомянули, что arguments.form [variables.fieldName] является списком, разделенным запятыми?Если это так, то каждый элемент списка должен сопоставляться (кстати, # в sdkfk364563! @ # $% Должен быть разделен).

Возможный ответ:

if (structKeyExists(arguments.form, variables.fieldName)){
    // Assuming arguments.form[variables.fieldName] is a comma-delimited list
    fieldNameArray=listToArray(arguments.form[variables.fieldName], ',', true);

    for (fieldValue in fieldNameArray) {
        fieldValue=trim(fieldValue);
        if (fieldValue eq "" or REfindNoCase("^[a-zA-Z0-9]*$",fieldValue) eq 0) {
            lstError = listAppend(lstError,nRow);
        }
    }        
}
0 голосов
/ 06 июля 2019

[[:alnum:]] - это синтаксис POSIX, который может не поддерживаться.Используйте универсальный синтаксис ASCII, [a-zA-Z0-9].Также измените ваш код, чтобы учесть наличие целого числа и исключить любые возможные пробелы.

 if (structKeyExists(arguments.form, variables.fieldName)){
        if (REfindNoCase("^[a-zA-Z0-9]*$",trim(arguments.form[variables.fieldName])) eq 0) {
            lstError = listAppend(lstError,nRow);
        }
 }
...