Я пишу RegEx для использования на полях ввода. Цель этого - позволить пользователю вводить только цифры и больше ничего (даже точка и запятая не допускаются). Вот мой код до сих пор:

RegExp = new RegExp(/^[0-9]$/);

Это, тем не менее, позволяет пользователю вводить точки и запятые. Какое изменение я должен сделать, чтобы получить только цифры?

0
Alpha Bravo Charlie ... 15 Авг 2019 в 14:50

2 ответа

Лучший ответ

Вы можете использовать type = "number", чтобы разрешить только цифры и событие onkeypress для фильтрации dot знака для вашего элемента управления input:

<input type="number"
   (onkeypress)="return (event.charCode == 8 || event.charCode == 0 || 
   event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57">

Как говорит MDN:

элементы типа number используются для того, чтобы пользователь мог ввести число. Они включают встроенную проверку для отклонения нечисловых записей. Браузер может выбрать использование шаговых стрелок, чтобы позволить пользователю увеличивать и уменьшать значение с помощью мыши или простого касания пальцем.

1
StepUp 15 Авг 2019 в 11:59

Я думаю, что это может быть то, что вам нужно:

[Test]
public void TestRegExDigitsOnly()
{
    var regEx = new Regex("^[0-9]*$");
    regEx.IsMatch("123").ShouldBeTrue();
    regEx.IsMatch("12.").ShouldBeFalse();
    regEx.IsMatch("1.3").ShouldBeFalse();
    regEx.IsMatch("abc").ShouldBeFalse();
}
0
Ben Wesson 15 Авг 2019 в 12:13