#php #regex
#php #регулярное выражение
Вопрос:
Для ненулевого значения у меня есть /^[1-9][0-9]*$/
и для буквенно ^[0-9a-zA-Z ] $
-цифрового, но я не знаю, как их объединить.
Пожалуйста, помогите с регулярным выражением для любого буквенно-цифрового шаблона, кроме одного 0
Ответ №1:
Вы можете использовать этот шаблон для предотвращения совпадений, начинающихся с 0
^(?!0)[0-9a-zA-Z ] $
Если 01
все в порядке, но не просто 0
используйте этот шаблон
^(?!0$)[0-9a-zA-Z ] $
Ответ №2:
вот что вам нужно :
/^[1-9a-zA-Z ] $/
Объяснение: разрешены числа от 1 до 9, символы от A до Z (регистр не чувствителен) и допускается пробел.
Комментарии:
1. похоже, что OP хочет ’90’, но не ‘0’ сам по себе
2. Извините, я провел некоторое тестирование, и я получаю false для отрицательных чисел и для false. Другими словами, шаблоны типа 0, -2 или false не совпадают. Как я мог сделать, чтобы не совпадать только с одной цифрой 0 (ноль) Спасибо
Ответ №3:
Без предварительного просмотра вы можете использовать:
^[1-9a-zA-Z][0-9a-zA-Z ]*$
Конечно, с предвидением это короче:
^(?!0$)[0-9a-zA-Z ] $
Комментарии:
1. Вы можете добавить
space
шаблон2. Вы имеете в виду также сопоставлять пробелы?
3. Шаблон операции
[0-9a-zA-Z ]
4. Извините, я этого не заметил, включил его сейчас.
Ответ №4:
На этот вопрос есть много хороших ответов.
Но, учитывая вопрос OP, я считаю, что лучшим способом сделать это было бы:
(^[1-9a-zA-Z ]$|^[1-9a-zA-Z ][0-9a-zA-Z ] $)
-
^[1-9a-zA-Z ]$
если есть только один символ -
^[1-9a-zA-Z ][0-9a-zA-Z ] $
если более одного символа.
Ответ №5:
Извините, ни один из них не сработал, и мне пришлось прочитать руководство и придумать тот, который сработал. Мне помогли ответы, опубликованные другими.
([^0]|[0-9a-zA-Z_ ]{2,}amp;)
если один символ, а не один ноль. Если используется более одного символа, используется число, буква, подчеркивание и пробел.
Проверено следующим образом:
$string0 = 0;
$string1 = 1;
$string2 = 9;
$string3 = '1 - 3 Million'; // is telling this is zero
$string4 = 'false';
$string5 = '0 - 3 Million';
$string6 = '011';
$regex = '([^0]|[0-9a-zA-Z_ ]{2,}amp;)';
$modifiers = '';
$exp = chr(1) . $regex . chr(1) . $modifiers;
$expresion = $exp;
echo 'CHR(1):'.chr(1).' END';
echo '<br/>';
echo 'EXPRESSION 1:'.$exp.' END';
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string0);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string1);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string2);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string3);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string4);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string5);
echo '<br/>';
echo 'Is this non-zero? '.preg_match($expresion, $string6);
ВЫВОД
EXPRESSION 1:([^0]|[0-9a-zA-Z_ ]{2,}amp;) END
Is this non-zero? 0
Is this non-zero? 1
Is this non-zero? 1
Is this non-zero? 1
Is this non-zero? 1
Is this non-zero? 1
Is this non-zero? 1