Пример: 12
, 2p
, 2%s
- эти входные значения должны быть разрешены.
Я использую это регулярное выражение [/^([0-9\.]|[p|%s])*$/]
, и оно позволяет %s
, s
, p
и %p
.
Я пробовал с [/^[0-9]*%s$]
, который отлично работает тестером регулярных выражений, не работает в моем коде. Есть ли что-нибудь, что мне нужно, чтобы внести изменения в регулярное выражение, чтобы работать в реагировать.
1) Это позволяет пользователю вводить несколько десятичных знаков 2.2.2.2
2) Может набирать несколько p
, s
, %
Как не набирать вышеописанные сценарии.
Редактировать: Это регулярное выражение [/ ^ \ d + (?:. \ D +)? (?: p |% s)? $ /] работает нормально, когда я тестирую, но когда реализован в коде, не позволяющем мне ввести% s и десятичное значение
, вот мой код
onValueChange(event: any) {
const re=/^\d+(?:\.\d+)?(?:p|%s)?$/
if (event.target.value === '' || re.some(regEx => event.target.value.search(regEx) > -1)) {
this.setState({ tempValue: event.target.value } as Ipreservice);
}
if (inputValue.indexOf(p) >= 0) {
tempValue = inputValue.replace(new RegExp(p, 'g'), '');
displayUnit = DisplayUnit.p;
}else if (inputValue.indexOf(%s) >= 0){
tempValue = inputValue.replace(new RegExp(%s, 'g'), '');
displayUnit = DisplayUnit.s;
} else if (!isNaN(Number(inputValue))) {
tempValue = inputValue;
}