Ich suche ein regular expression, das Sonderzeichen verhindert und nur Buchstaben, Zahlen, Bindestriche (-) und Unterstriche (_) ein Leerzeichen zulässt.

Diese Regex funktioniert hervorragend, lässt jedoch keine Leerzeichen zwischen Wörtern zu.

Wenn Sie beispielsweise "123 456" eingeben, wird ein benutzerdefinierter Fehler angezeigt, den ich definiert habe. Wie ich diese Registrierung optimieren kann, um neben Buchstaben, Zahlen, Bindestrichen und Unterstrichen auch Platz zwischen Wörtern zu lassen.

<input type="text" name="serialNumber" data-ng-model="SerialNumber" ng-pattern="/^[a-zA-Z0-9_-]*$/" maxlength="100"/>
<div data-ng-if="Form.serialNumber.$error.pattern" class="error">Please enter valid serial number</div>
3
immirza 19 Aug. 2015 im 09:52

5 Antworten

Beste Antwort

Wenn Sie ein Leerzeichen in Ihrer Eingabe zulassen möchten, müssen Sie es in die Zeichenklasse aufnehmen.

Laut Dokumenten:

ngTrim (optional)
Bei Einstellung auf false schneidet Angular die Eingabe nicht automatisch. Dieser Parameter wird für input[type=password] Steuerelemente ignoriert, die die Eingabe niemals kürzen.
(Standard: true)

Wenn Ihr Eingabefeld kein Passwortfeld ist, würde ich empfehlen:

ng-pattern="/^[\w -]*$/"

Das \w steht in JS für [A-Za-z0-9_], der Unterstrich muss nicht maskiert werden und der Bindestrich am Ende der Zeichenklasse muss auch nicht maskiert werden.

6
Wiktor Stribiżew 19 Aug. 2015 im 07:41
^[a-zA-Z0-9_-]+(?:\s+[a-zA-Z0-9_-]+)*$

Konstruieren Sie Ihre Regex auf diese Weise, um words und nicht spaces am Anfang oder Ende zu erfassen.

0
vks 19 Aug. 2015 im 06:54

Ich denke, ich habe eine sehr einfache und grundlegende Lösung für meine Anforderung gefunden i.e. to allow alphanumeric, _, - and space. Space should be allowed between word and not leading and trailing space.

ng-pattern="/^[a-zA-Z0-9\_\- ]*$/"

Wenn jemand Probleme damit hat, lassen Sie es mich bitte wissen.

8
Asunez 19 Aug. 2015 im 08:00

Sie können den folgenden auf Lookaround basierenden regulären Ausdruck ausprobieren.

^(?!\s)(?=$|.*[a-zA-Z0-9_-]$)[a-zA-Z0-9_\s-]*$
0
Avinash Raj 19 Aug. 2015 im 07:05

Verwenden Sie dieses Muster, um das Problem zu lösen

ng-pattern="/^(\D)+$/"
0
KARTHIKEYAN.A 9 Jän. 2018 im 05:00