2012-02-21 5 views
0

Необходимо регулярное выражение, которое может соответствовать строке типа "1B7FL26X3WS731388". Буквенно-цифровая длина 17 символов.Регулярное выражение

Я использую это выражение.

$rEX = '/([A-Z0-9]){17}/'; 

, но он также возвращает часть из такой строки "FGD798791B7FL26X3WS731388POPOD";

Мне нужно выбрать строку длиной ровно 17 символов. 18-й символ не должен быть буквенно-цифровым.

+0

Вот как регулярные выражения работают. Если вам нужно, чтобы он соответствовал только тому, что 18-й символ не является алфавитно-цифровым, вы должны указать это в своем выражении. –

+0

Спасибо всем за ваш ответ. Я получил то, что мне было нужно. $ rEX = '/ ([A-Z0-9]) {17} ([^ A-Za-z0-9]) {1} /'; сейчас работает для меня – CoreCoder

ответ

0

$rEX = '/[^A-Z0-9]([A-Z0-9]){17}[^A-Z0-9]/'; следует делать. [^...] отрицает класс символов.

2

Добавить начало и конец вашему шаблону:

$rEX = '/^([A-Z0-9]){17}$/D'; 
0

Это сделает

^([a-zA-Z0-9]){17}([^a-zA-Z0-9])*$ 
+0

это будет соответствовать «1234567890abcdefghijk ###» и вернет «567890abcdefghijk» в группе 1 – shift66

1

Вы должны использовать^$ разделителей

$ ReX = «/^([ А-Z0-9]) {17} $/';

Чтобы разрешить прописную букву алфавитно-цифровой 17 длина строки

Вы регулярное выражение позволит все строки, которые содержат подстроку в верхнем регистре буквенно-цифровой 17 длина строки.

-1

попробовать это ....

<?php 
$title='1B7FL26X3WS731388'; 
$result = preg_replace("/[^a-zA-Z0-9]/", "", $title); 
echo strlen($result); 
?>