2017-01-03 5 views
1

Ich hatte diese Regex ^[a-zA-Z_ ,.'-]+$ für Name Validierung, die gut funktionierte. Aber das Problem ist, dass der Apostroph einige Probleme aufwirft. Also habe ich das Apostroph vor der Validierung codiert.Regex: Zeichensatz-Validierung

name = name.Replace("'", "'"); 

Nun kann jeder gültigen Namen wie john's doe sieht aus wie john's doe die sich mit aktuellen Regex werden kann nicht bestätigen.

Nun was ich möchte ist zu prüfen,, wenn der Name genau die ' zusammen mit dem gültigen Zeichensatz enthält.

Hinweis: Ich will nicht & und ; den aktuellen Zeichensatz hinzuzufügen, dies verursacht &; als gültigen Namen zulassen.

+1

Warum nicht den richtigen Weg? Wo ist dein Muster gespeichert? In einigen XML? Warum nicht in einem CData-Block verwenden? Das '^ ([a-zA-Z_, .-] | ') + $' sieht für Leute und Regex-Engine nicht gut aus. –

+0

Welche Probleme verursacht das Apostroph? Ich nehme an, Sie könnten '^ [a-zA-Z_, .-] + ' [a-zA-Z_, .-] + $ machen, vorausgesetzt, dass ein Apostroph niemals das erste oder letzte Zeichen ist. – juharr

+0

Ich verwende 'sitecore' cms und Validierung läuft auf der Serverseite. Ich bin nicht vertraut mit 'Cdata' –

Antwort

2

Verwenden Sie eine Gruppierung konstruieren (...) oder (?:...):

^(?:[a-zA-Z_ ,.-]|')+$ 

Einzelheiten:

  • ^ - Beginn der Zeichenfolge
  • (?:[a-zA-Z_ ,.-]|')+ - eine der beiden:
    • [a-zA-Z_ ,.-] - ein Symbol aus der Menge
    • | - oder
    • ' - ein Teil '
  • $ - Ende der Schnur.