Регулярное выражение для проверки того, содержат ли данные числовые значения (или пустое значение также допустимо) - PullRequest
1 голос
/ 31 марта 2010

мне нужно проверить, что данные содержат числовые данные или нет, и если они не числовые, возвращают 0, а если они числовые или пустые, возвращают 1.

Ниже приведен мой запрос в SQL.

SELECT dbo.Regex('^[0-9]','123') - возвращается 1.

SELECT dbo.Regex('^[0-9]','') - это не возвращает 1, но я хочу вернуть как 1, и я пытаюсь поместить пробел в "шаблон", также это не работает ...

пожалуйста, может кто-нибудь помочь ....

Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 31 марта 2010

Попробуйте:

SELECT dbo.Regex('^[0-9]*$','123')

или еще лучше:

SELECT dbo.Regex('^\d*$','123')

\d является стандартным сокращением для [0-9].Обратите внимание, что когда вы используете [0-9], это означает "совпадать ровно с одной цифрой". Подстановочный знак * означает совпадение с нулем или более, поэтому \d* означает совпадение с нулем или более цифрами, что включает пустой результат.

3 голосов
/ 31 марта 2010

Ваш Regex не совсем прав: "^[0-9]" проверяет только, является ли первый символ в строке числом. Ваше регулярное выражение вернет 1 в "3abcde".

Используйте

"^\d*$"

чтобы проверить, содержит ли поле только цифры (или ничего). Если вы хотите разрешить пробелы, используйте

"^\s*\d*\s*$"

Если вы хотите разрешить знаки и десятичные дроби, попробуйте

"^\s*(+|-)?\d*\.?\d*\s*$"
0 голосов
/ 31 марта 2010

Попробуйте ^[0-9]*$, что будет соответствовать только 0 или более цифрам:

SELECT dbo.Regex('^[0-9]*$','')

должен вернуть 1, как следует ...

SELECT dbo.Regex('^[0-9]*$','123')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...