2010-05-20 3 views
1

Примеры:Как определить, имеет ли строка хотя бы один символ с использованием регулярного выражения?

  1. "1 Имя": Должен сказать, что есть символы
  2. "10000": OK
  3. "na123me": Должен сказать, что есть символы
  4. "на 123, 000": Должен сказать, что у него есть символы
+3

Что вы подразумеваете под алфавитами? Только буквенные символы?/[a-zA-Z] */ – WhirlWind

+2

, пожалуйста, уточните свой вопрос. – Femaref

+0

Что вы подразумеваете под «find, если строка имеет алфавиты»? Вы хотите узнать, имеет ли строка алфавитный символ? – goedson

ответ

2

Регулярное выражение, которое вы хотите это [a-zA-Z], но вам нужно использовать метод find().

Эта страница позволит вам тестировать регулярные выражения для ввода.

http://www.fileformat.info/tool/regex.htm

0

С помощью этой строки вы можете проверить, содержит ли ваша строка только символы, заданные регулярным выражением (в этом случае a, b, c, ... z и A, B, C ,. ..Z):

boolean doesMatch = "your string".matches("[a-zA-Z]*"); 
+2

, что регулярное выражение будет соответствовать любой строке, которая имеет хотя бы один алфавитный символ. – Kip

+0

Я думал, что это будет соответствовать любой строке, которая имела бы только один алфавитный символ, а не только по крайней мере один. Не нужна ли звездочка? – Paul

+0

Спасибо, я добавил один. – tangens

5
public static void main(String[] args) 

{ 
    Pattern p = Pattern.compile("^([^a-zA-Z]*([a-zA-Z]+)[^a-zA-Z]*)+$"); 
    Matcher m = p.matcher("1 name"); 
    Matcher m1 = p.matcher("10,000"); 
    Matcher m2 = p.matcher("na123me"); 
    Matcher m3 = p.matcher("na 123, 000"); 
    Matcher m4 = p.matcher("13bbbb13jdfgjd43534 fkgdfkgjk34 rktekjg i54 "); 

    if (m.matches()) 
     System.out.println(m.group(1)); 

    if (m1.matches()) 
     System.out.println(m1.group(1)); 

    if(m2.matches()) 
     System.out.println(m2.group(1)); 

    if(m3.matches()) 
     System.out.println(m3.group(1)); 

    if (m4.matches()) 
     System.out.println(m4.group(1)); 
} 

Вышеприведенное должно соответствовать любой букве в нижнем и верхнем регистре. Если регулярное выражение возвращает совпадение, строка содержит в себе букву.

Результат

1 Имя

меня

на 123, 000

I54

Заявления, которые не содержат никаких писем не соответствуют выражению.

+3

Если он совпадает, строка содержит * только * буквы (A-Z). –

+0

Должно быть исправлено. Спасибо, что дали мне знать. – npinti

+0

Сбой при вводе: «11» – OscarRyz

10
public class HasCharacters { 
    public static void main(String [] args){ 
     if(args[0].matches(".*[a-zA-Z]+.*")){ 
      System.out.println("Has characters "); 
     } else { 
      System.out.println("Ok"); 
     } 
    } 
} 

Тест

$java HasCharacters "1 name" 
Has characters 
$java HasCharacters "10,000" 
Ok 
$java HasCharacters "na123me" 
Has characters 
$java HasCharacters "na 123, 000" 
Has characters 
+1

Это не работает. Регулярные выражения Java по умолчанию ограничены '^' и '$'. Тест с '1name' самостоятельно. – BalusC

+0

Он не подходит для первого примера – Vishal

+1

Исправлено и протестировано B-) – OscarRyz

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