2015-10-19 2 views
0

мне нужно регулярное выражение, которое соответствует строке в начале ввода, который удовлетворяет следующим условиям:Регулярное выражение (RegEx) не работает

  1. начинаться с буквы
  2. заканчиваться буквой или номером
  3. может содержать буквы, цифры и пробелы

у меня есть это выражение до сих пор:

^([a-zA-Z]+[a-zA-Z0-9 ]*[a-zA-Z0-9]+)|[a-zA-Z] 

http://userguide.icu-project.org/strings/regexp

оператор ИЛИ в выражении, чтобы строка, состоящая из одной буквы.

Проблема в том, что вторая часть инструкции OR всегда является предпочтительной, поэтому, когда вход query1, он соответствует только q.

Как я могу решить эту проблему?

Есть ли способ упростить выражение? Мой путь кажется немного сложным для этого относительно простого случая.

ответ

1
^([a-zA-Z]+[a-zA-Z0-9 ]*[a-zA-Z0-9]+)$|^[a-zA-Z]$ 

Вы можете использовать ^$ якорей, означает, что, что это только для single letter string

1

Вы можете использовать это регулярное выражение, чтобы удовлетворить все условия:

^[a-zA-Z](?:[a-zA-Z0-9 ]*[a-zA-Z0-9])?$ 
  • ^[a-zA-Z] матчей письмо в начале.
  • (?:...)? является необязательной частью, позволяющей вводить один символ.
  • [a-zA-Z0-9] в уверенности, что последний символ является буквенно-цифровым.

RegEx Demo

0

Regex в соответствии с характером в начале, символ, число или пробелов между ними и заканчивается символом или номер:

^[AZ | AZ] [AZ | AZ | 0-9 | ] * [a-z | A-Z | 0-9] $

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