2016-11-17 3 views
1

У меня есть поле ввода, которое должно принимать только символы, используемые в синтаксисе валюты (знак доллара, цифры, запятые и десятичные знаки). Как я могу написать свой REGEX, чтобы проверить, содержит ли строка, по крайней мере, один символ, который НЕ из перечисленных символов?Как я могу найти один экземпляр символа с помощью REGEX?

Я пробовал следующее, но проблема с этим выражением состоит в том, что если в строке присутствует один действительный символ, он выдает оператор else. (UnitPriceVal является пользовательский ввод строки)

Я хочу написать регулярное выражение, которое проверяет, если вся строка состоит из действительной валюты, если верно выполнить инструкцию то еще

validCurrency = /([0-9\$.,])/; 

if (!unitPriceVal.match(validCurrency) || unitPriceVal == "") { 
         unitPrice.setValueState("Error"); 
        } else { 
         unitPrice.setValueState("None"); 
        } 
       }, 
+0

я может быть недоразумение, но делает 'validCurrency =//;' (+ [0-9 \ $,.]) работа для вас? – elethan

+0

Да, он запускает блок else, когда символ ONE соответствует выражению, я хочу написать регулярное выражение, которое проверяет, содержит ли выражение WHOLE действительную валюту –

ответ

2

Я хочу написать регулярное выражение, которое проверяет, если вся строка состоит из действительной валюты

Чтобы проверить всю строку, якорь матча до начала и конца ввода, используя ^ и $, и убедитесь, что между ними есть последовательность (+) допустимых символов:

/^[\d$.,]+$/; 

Вам не нужно круглые скобки. Вам также не нужно скрывать $ внутри набора символов. Наконец, вы можете использовать \d для цифры.

Для того, чтобы сделать это проверить, лучше всего использовать атрибут input элемента pattern. В этом случае вам не нужны якоря (они подразумеваемые):

<input pattern="[\d$.,]+"> 
+0

отличное решение. Я только хочу, чтобы я мог использовать шаблон ввода, к сожалению, я пишу в представлении SAP UI5/xml, элементы управления очень ограничены. Это (регулярное выражение) действительно работало! –

1

Как я могу написать мой REGEX, чтобы проверить, содержит ли строка хотя бы один символ , который НЕ относится к перечисленным выше символам?

function validUnitPrice(unitPriceVal) { 
    let invalidCurrency = /[^0-9\$.,]/; 
    return unitPriceVal.search(invalidCurrency) == -1; 
} 

^ символа в качестве первого символа внутри набора символов ([^...]) сводит на нет набора символов, т.е. соответствующих символов не в наборе.

+0

Хотя комментарий отрицания верен, на самом деле это не решает проблему. Ответ Торазабуро - правильный подход. – wordsmith

Смежные вопросы