Проверка имен свойств с помощью regEx - PullRequest
0 голосов
/ 27 февраля 2019

Я бы хотел быстро проверить, является ли строка допустимой для использования в качестве имени свойства, используя правила точечной нотации (любые буквы или цифры, а также _ и $, если она не начинаетсяс цифрой), как очевидно, если используется скобочная запись, то все верно.

Я пытался найти решение для regEx, но мои знания о regEx невелики.Я думаю, что мой текущий шаблон будет разрешать буквы, цифры, $ и _, но я не знаю, как запретить начинать с цифры

function validName(str){
    // check if str meets the requirements 
    return /^[a-zA-Z0-9$_]+$/.test(str);
}

validName("newName")    // should return TRUE
validName("newName32")  // should return TRUE
validName("_newName")   // should return TRUE
validName("4newName")   // should return FALSE
validName("new Name")   // should return FALSE
validName("")           // should return FALSE

Ответы [ 4 ]

0 голосов
/ 27 февраля 2019

Поскольку \w охватывает [a-zA-Z0-9_] и \d охватывает [0-9], вы можете использовать это регулярное выражение:

const validName = str => /^(?!\d)[\w$]+$/.test(str);

console.log(validName("newName")) // should return TRUE
console.log(validName("newName32")) // should return TRUE
console.log(validName("_newName")) // should return TRUE
console.log(validName("4newName")) // should return FALSE
console.log(validName("new Name")) // should return FALSE
console.log(validName("")) // should return FALSE
0 голосов
/ 27 февраля 2019

Вы можете просто сделать первый символ шаблона таким же набором символов, за исключением того, что не включены цифры:

^[a-zA-Z$_][a-zA-Z0-9$_]*$

0 голосов
/ 27 февраля 2019

При решении таких регулярных выражений я рекомендую использовать regexr.com

Этот фрагмент должен решить вашу проблему.

function validName(str){
    // check if str meets the requirements
    return /^[^0-9][a-zA-Z0-9$_]+$/.test(str)
}

console.log(validName("newName"))   // TRUE
console.log(validName("newName32")) // TRUE
console.log(validName("_newName"))  // TRUE
console.log(validName("4newName"))  // FALSE
console.log(validName("new Name"))  // FALSE
console.log(validName(""))          // FALSE
0 голосов
/ 27 февраля 2019

Добавление отрицательного прогноза должно быть достаточно хорошим.

^(?![0-9])[a-zA-Z0-9$_]+$

Тест

function validName(str) {
  // check if str meets the requirements 
  return /^(?![0-9])[a-zA-Z0-9$_]+$/.test(str);
}

console.log(validName("newName")) // should return TRUE
console.log(validName("newName32")) // should return TRUE
console.log(validName("_newName")) // should return TRUE
console.log(validName("4newName")) // should return FALSE
console.log(validName("new Name")) // should return FALSE
console.log(validName("")) // should return FALSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...