2016-11-29 6 views
2

Ich verwende die AngularJS-Direktive für meine Formulareingabeüberprüfung. Gibt es eine Möglichkeit, meine Regex nur ein Sonderzeichen (:) zusammen mit Zahlen und Alphabeten zulassen zu lassen. Dies ist die Anweisung, die ich in Stackoverflow gefunden habe.Regex zum Erlauben eines Sonderzeichens (:) und nur Zahlen und Alphabete

Ich habe versucht, am Ende Doppelpunkt, aber ich bin nicht in der Lage, meine Lösung zu erreichen.

+1

Versuchen Sie '.replace (/^([^:] * :) | [^ \ w \ s]/g, Funktion ($ 0, $ 1) {return $ 1? $ 1.replace (/ [^ \ w \ s ] +/g, '') + ':': '';}) 'anstelle von' .replace (/ [^ \ w \ s]/gi, '') ' –

Antwort

2

Auf der Grundlage Ihres aktuellen Codes suchen Sie nach Ersatz für alles, das kein Buchstabe, keine Zahl oder kein Leerzeichen ist. Die Einheit [^\w\s:] sollte funktionieren.

\w = az, AZ, 0-9

\s = Leerzeichen \ r \ n \ t \ f \ v

würde ich halte auch das Entfernen von \s wie es Räume erlauben würde, in Ihrem Eingabe, es sei denn, dies ist Ihre Absicht.

+0

NEIN ich möchte nicht, dass Leerzeichen erlaubt werden. Ich möchte nur, dass der Doppelpunkt mit \ w = a-z, A-Z, 0-9 – Praveen

+0

erlaubt wird, Ok, dann würdest du '' 'nur benutzen wollen. '\ s' entspricht Leerzeichen. – jj27

1

Verwenden .replace(/^([^:]*:)|\W/g, function($0,$1) { return $1 ? $1.replace(/\W+/g,'')+':' : ''; }) statt .replace(/\W/gi, '')

Siehe folgende Demo:

var s = "(*a word : 156,567-354 *)"; 
 
console.log(s.replace(/^([^:]*:)|\W/g, function($0,$1) { return $1 ? $1.replace(/\W+/g,'')+':' : ''; }));

Die /^([^:]*:)|[^\w\s]/g regex in Gruppe 1 0+ Zeichen andere als : entsprechen und erfassen wird und eine : ODER wird mit jedem Zeichen übereinstimmen, das kein Wort oder Leerzeichen ist. Wenn Gruppe 1 übereinstimmt, wird der gesamte Inhalt von den Zeichen außer Wort- und Leerzeichenzeichen entfernt, und : wird hinzugefügt, andernfalls werden die übereinstimmenden Zeichen mit [^\w\s] entfernt.

+0

Ich möchte nicht auch den Leerraum. Gibt es eine Möglichkeit, dass ich das tun könnte – Praveen

+0

Sie möchten alle Leerzeichen löschen? Ich habe die Antwort bearbeitet. Der Hauptpunkt besteht darin, '[^ \ w \ s]' durch '\ W' zu ersetzen, da' \ W' zu etwas anderem als Wortzeichen passt, während '[^ \ w \ s]' mit einem anderen Zeichen als einem Wort und übereinstimmt ein Whitespace-Zeichen. –

Verwandte Themen