регулярное выражение для любых буквенно-цифровых символов, кроме числа 0

#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