Я пытаюсь проверить строку с регулярным выражением в контроллере javascript? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь проверить строку с помощью регулярного выражения.что строка должна содержать только перечисленные слова и символы.

(то есть) строка может принимать и, или, не, числа, (,) и пробел.

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

/(\d|and|or|not|\(|\)|\s)*/

когда я использую это в компоненте молнии Salesforce controller.js он не дает ожидаемого результата.

input : 1 and ( 2 or 3 )
expected output : true

input : 1 aaa ( 2 or 3 )
expected output : false

заранее спасибо.

1 Ответ

1 голос
/ 11 июля 2019

Проблема в том, что вы определили, что вам нужно любое число из них, и вам нет дела до позиции. Таким образом, строка 1 aaa ( 2 or 3 ) соответствует 1, а также (пробел), (, 2, and, 3, ), поэтому она удовлетворяет регулярному выражению. Тот факт, что есть aaa, который не соответствует, игнорируется, когда есть другие вещи, которые соответствуют.

Однако, если вы используете начальный и конечный якоря ^ и $, это определяет, что ваш весь вход должен соответствовать этому шаблону в отличие от любых вложенных элементов. часть, которая именно то, что вы хотите:

const regex = /^(\d|and|or|not|\(|\)|\s)*$/;

console.log(regex.test("1 and ( 2 or 3 )")); // true
console.log(regex.test("1 aaa ( 2 or 3 )")); // false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...