Могу ли я получить регулярное выражение для проверки полной строки? - PullRequest
0 голосов
/ 15 июля 2009

Я довольно новичок в Regex'ах, поэтому мне было интересно, возможно ли это?

Возьмите строку и убедитесь, что все символы A-Z или a-z.

Мое лучшее предположение на данный момент:

"^[A-Za-z]*$"

Но, похоже, возникают некоторые проблемы, если символ в середине строки не является допустимым символом (например, "aaa__aa") Regex.IsMatch возвращает true ..: (

[EDIT] Было бы неплохо несколько комментариев к вашему ответу, а не только регулярное выражение:)

Ответы [ 7 ]

2 голосов
/ 15 июля 2009

Попробуйте это

"^[A-Za-z]*$"
1 голос
/ 15 июля 2009

^[a-zA-Z]+$ должен сделать работу. Но когда вы хотите поймать предложение с пробелами, ^[a-zA-Z\s]+$ будет лучше, где \ s означает место для этого. Или вы можете даже расширить его, чтобы поймать символ пунктуации.

1 голос
/ 15 июля 2009

Да, это должно работать. Вы также можете использовать что-то вроде:

^[A-Za-z]+$

чтобы убедиться, что есть хотя бы один буквенный символ. Какой язык вы используете? В python это было бы лучше достигнуто с помощью функции isalpha(). На выбранном вами языке могут быть похожие функции. Кроме того, во многих реализациях регулярных выражений вы можете просто сделать:

^\a+$

В некоторых реализациях регулярных выражений (в частности, POSIX) + должно быть \+.

1 голос
/ 15 июля 2009

То, что вы сейчас говорите, это
Строка действительна только в том случае, если она содержит символы от 0 до 9 или ничего

Чтобы проверить, являются ли символы a-z или A-Z, вам нужно использовать

^[A-Za-z]*$

Что говорит
Строка действительна, только если символы находятся между a - z или A - Z (включительно) или не имеют значения

EDIT
Новое регулярное выражение, которое вы отредактировали предыдущее, теперь работает нормально и ничего не соответствует подчеркиванию. Возможно, у вас есть проблема в реализации кода.

1 голос
/ 15 июля 2009

Я думаю, вы хотите

"^[A-Za-z]+$"
0 голосов
/ 15 июля 2009
using System;
using System.Text.RegularExpressions;

public class Test
{
  public static void Main() {
    if (Regex.IsMatch("aaa_aa", "^[a-zA-Z]*$"))
      Console.WriteLine("Pigs can fly");
  }
}
0 голосов
/ 15 июля 2009

"aaa_aaa" по-прежнему совпадает, потому что соответствует первому блоку. Включая '^' и '$' в ваше выражение, вы указываете, что начало строки должно сначала совпадать, за которым следует блок букв, за которым следует конец строки. По сути это означает, что вся строка должна соответствовать выражению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...