RegEx для соответствующих строк, не начинающихся с числа, передающего буквенно-цифровую - PullRequest
1 голос
/ 22 мая 2019

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

Я нашел правильное решение, которое не работает все время, выполнив:

export const cannotBeginWithAdigit= new RegExp("/^d/");
export const canOnlyContainNumsbersAndDigits = new RegExp('/[,"/\\[]:|<>+=.;?*]/g');

Я помещаю регулярное выражение между ||проверить первый, затем второй.

Другое, которое не работает:

^d{1}[0-9a-zA-Z]

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Здесь мы можем начать (^) наше выражение с не начальных цифр ([^\d]), за которыми следует список желаемых символов:

^[^\d][A-Za-z0-9]+

DEMO

Затем мы также можем добавить дополнительные границы.Например, совет anubhava в комментарии хорош, если добавить конечный символ и использовать флаг i:

/^[a-z][a-z\d]*$/i

Test

const regex = /^[^\d][A-Za-z0-9]+/gm;
const str = `123abc
abc123abc
`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

Схема RegEx

jex.im визуализирует регулярные выражения.

enter image description here

enter image description here

0 голосов
/ 22 мая 2019

try /^\D{1}\w+$/

Объяснение:

\D означает выбор только не цифр, {1} ограничивает совпадение одной буквой.\w - это совпадение слов, оно соответствует всем буквенно-цифровым, но никаким другим символам.+, чтобы убедиться, что в \w совпадает более одной буквы.Вы можете изменить его в соответствии с вашими требованиями.

...