2015-02-08 2 views
0

Я пытаюсь сопоставить шаблон с этим регулярного выражениемRegex для соответствия строк либо не точной строки или шаблона

"^[a-zA-Z]{1}[a-zA-Z0-9\\s_]*(?<![Ii][Dd]|[Cc][Rr][Ee][Aa][Tt][Ee][Dd][Dd][Aa][Tt][Ee]|[Cc][Rr][Ee][Aa][Tt][Ee][Dd][Bb][Yy]|[Mm][Oo][Dd][Ii][Ff][Ii][Ee][Dd][Dd][Aa][Tt][Ee]|[Mm][Oo][Dd][Ii][Ff][Ii][Ee][Dd][Bb][Yy]|[Oo][Rr][Gg][Ii][Dd])$" 

Эта модель должны соответствовать любой строке, которая не начинается с числом или имеет что-нибудь еще, кроме пробел, символы подчеркивания, символы и цифры вместе с тем, что он также должен потерпеть неудачу, если строка равна точно ID или CreatedDate или CreatedBy или ModifiedDate или ModifiedBy или OrgID. Он также должен проверить, что статические строки проверены без чувствительности к регистру.

  • Pass - "Bob9 Том"
  • ошибка - "9Bob Том"
  • ошибка - "ID"
  • Pass - "Tom Tom"
  • Pass - "Том ID"
  • Pass - "IDTom"
  • Pass - "TomID"
+0

Значения, начинающиеся с пробела или подчеркивания, действительны? – JohnLBevan

+0

Нет, что недействительно. У меня есть кое-что, что я обновляю в вопросе. Просто подтвердите это пожалуйста. –

ответ

2

Вы должны добавить отрицательный посмотрите в начале, чтобы проверить строку, которая не будет содержать указанную точную строку. (?i) называется нечувствительным к регистру модификатором, который заставляет механизм регулярных выражений выполнять нечувствительность к регистру.

@"(?i)^(?!(?:ID|CreatedDate|CreatedBy|ModifiedDate|ModifiedBy|OrgID)$)[a-zA-Z][a-zA-Z0-9\s_]*" 

DEMO

+0

Спасибо. Я сделал это с негативным взглядом. Почти похожа на твою. Но чтобы сделать статическую строку нечувствительной к строкам, мне пришлось включить все возможные случаи для каждой строки. Я обновил свой вопрос. Просто дайте мне понять, правильно это или нет. Если есть другой лучший способ, дайте мне знать. –

+0

добавил '(? I)', чтобы выполнить нечувствительность к регистру. –

1

Этот шаблон должен соответствовать любой строке

  • , который начинается не с числом

    ^\D 
    
  • или имеет что-нибудь еще, кроме пространства, подчеркнуть, символы и цифры

    ^\D[ _a-zA-Z0-9]*$ 
    
  • наряду с этим он также должен потерпеть неудачу, если строка точно ID или CreatedDate или CreatedBy или ModifiedDate или ModifiedBy или OrgID.

    ^(?!(?:CreatedDate|CreatedBy|ModifiedDate|ModifiedBy|OrgID)$)\D[ _a-zA-Z0-9]*$ 
    
  • Следует также проверить, что статические строки проверены без чувствительности к регистру.

    ^(?!(?:(?i)CreatedDate|CreatedBy|ModifiedDate|ModifiedBy|OrgID)$)\D[ _a-zA-Z0-9]*$ 
    

Примечание

  • Последнего шаг может быть замещено делают весь регулярное выражение не чувствителен к регистру.
  • ^\Dбуквально означает «не следует начинать с числа». Если вы имели в виду «... но стартовый символ все равно должен быть одним из [ _a-zA-Z0-9]», то ^\D пришлось бы изменить на ^[a-zA-Z].
  • если вы переключите все выражение на регистр без учета регистра (и я не понимаю, почему вы этого не сделали), вы можете заменить все a-zA-Z на a-z.