2012-05-26 3 views
-2

Я хочу, чтобы генерировать два шаблона с ниже информацию,Специальная проверка символов с использованием Java Pattern

1) Следующие не могут быть введены в имени специальные символы, фамилию, адрес электронной почты, номер телефона поля в форме счета:

Pattern "[]:;? | = + * <>/\, Имена не могут начинаться с периода

2) следующие специальные символы не могут быть введены в организации компании ddress:

Узор: <>/\ |

Пожалуйста, дайте мне представление.

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

+4

[Что вы пробовали] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? –

+0

Для первого шаблона [<> []:;/\ "| = + * ?,] Для второго паттерна [<>/\ "|] Правильно ли это? Я не знаю, как мы можем проверить, что имена не могут начинаться с определенного периода. Может ли кто-нибудь предложить? –

ответ

4

Попробуйте эти модели

для 1-й точки

(?i)^([a-z][^"\[:\]\|=\+\*\?<>\\\/\r\n]+)$ 

для 2стой точки

(?i)^([a-z][^<>\\\/\|\r\n]+)$ 

Пояснение

1st Pattern 

"(?i)" +        -- Match the remainder of the regex with the options: case insensitive (i) 
"^" +         -- Assert position at the beginning of a line (at beginning of the string or after a line break character) 
"(" +         -- Match the regular expression below and capture its match into backreference number 1 
    "[a-z]" +        -- Match a single character in the range between “a” and “z” 
    "[^\"\\[:\\]\\|=\\+\\*\\?<>\\\\\\/\r\n]" +  -- Match a single character NOT present in the list below 
              -- The character “"” 
              -- A [ character 
              -- The character “:” 
              -- A ] character 
              -- A | character 
              -- The character “=” 
              -- A + character 
              -- A * character 
              -- A ? character 
              -- One of the characters “<>” 
              -- A \ character 
              -- A/character 
              -- A carriage return character 
              -- A line feed character 
     "+" +         -- Between one and unlimited times, as many times as possible, giving back as needed (greedy) 
")" + 
"$"         -- Assert position at the end of a line (at the end of the string or before a line break character) 


2nd Pattern 

"(?i)" +     -- Match the remainder of the regex with the options: case insensitive (i) 
"^" +      -- Assert position at the beginning of a line (at beginning of the string or after a line break character) 
"(" +      -- Match the regular expression below and capture its match into backreference number 1 
    "[a-z]" +     -- Match a single character in the range between “a” and “z” 
    "[^<>\\\\\\/\\|\r\n]" +  -- Match a single character NOT present in the list below 
           -- One of the characters “<>” 
           -- A \ character 
           -- A/character 
           -- A | character 
           -- A carriage return character 
           -- A line feed character 
     "+" +      -- Between one and unlimited times, as many times as possible, giving back as needed (greedy) 
")" + 
"$"      -- Assert position at the end of a line (at the end of the string or before a line break character) 

код

try { 
    boolean foundMatch = subjectString.matches("(?i)^([a-z][^\"\\[:\\]|=+*?<>\\\\/\\r\\n]+)$"); 
} catch (PatternSyntaxException ex) { 
    // Syntax error in the regular expression 
} 
+0

Отличный Cylian, спасибо за подробное объяснение, я просто хотел чтобы подтвердить, что для 1-го пункта, это также проверка Имена не могут начинаться с периода? –

+0

@MayurPatel: Добро пожаловать! – Cylian

+0

Я просто хотел подтвердить, что для 1-го пункта, это также проверка Имена не могут начаться с периода? и для 2-го пункта его выдача компиляционной ошибки, например Invalid escape sequence (допустимые: \ b \ t \ n \ f \ r \ "\ '\\) Можете ли вы проверить ее? –

1

Вместо того, чтобы использовать регулярные выражения, которые вы, очевидно, не уверены, с, вы можете использовать метод String.contains().

Однако, если вы должны использовать регулярное выражение, например, Mayur Patel, «[ab]» в основном означает a или b! Вы должны проверить regularexpressions.info

+0

String.содержит стандартный способ проверки специального символа, шаблон регулярного выражения - это вариант, который мы можем для него. Но у меня нет большой идеи, как создать шаблон, который я указал –

1

Ниже решение моей проблемы

1) (я)^([AZ] [^ \ "\ [: \] | = + *.? <> \\/\ г \ п] +) $

2) (я)^([AZ] [^ \»<> |? \\/\ г \ п] +) $

Я также добавил символ периода в 1) пункт для проверки не начинать имена с символом периода.

большое спасибо Cylian и Энди за помощь, это действительно помогло мне много.

Еще раз спасибо :)

Смежные вопросы