2017-05-11 6 views
-2

, dass mein Muster:Ignorieren neue Zeilen in regex

^[ A-Za-z0-9ığüşöçİĞÜŞÖÇ_.,#:&+-]*$ 

es diese chracters und spacse akzeptiert.

Aber ich möchte auch neue lines.User haben können neue Linien geben wie

asdasda 
asdasda 


asdasdsa 

Was soll ich tun?

das ist mein regex

https://regex101.com/r/N3Dbrz/3

ich neue Linien akzeptieren wollen, sondern wollen alle String als ohne neue Linien. Im Link akzeptiert es ohne neue Zeilen.

So sollte das Beispiel als

asdasda asdasda asdasdsa 

nicht mit neuen Linien

Ich bin mit Javascript, AngularJS aufgezeichnet werden. in mein Javascript, ist es wie folgt aus:

vm.addressTextPattern = /^[ A-Za-z0-9ığüşöçİĞÜŞÖÇ_.,/#:&+-]*$/; 
<textarea rows="5" ng-disabled="true" 
     name="billingCompanyAddress" 
     ng-model="vm.model.billingAddress.line1" 
     ng-required="true" 
     ng-minlength="15" 
     ng-pattern="vm.addressTextPattern" 
     maxlength="255" 
     md-maxlength="255"></textarea> 
+1

haben Sie versucht, Ihren Platz in '\ s' zu ändern? – quackenator

+0

Sie können '\ n' und/oder' \ r 'dort mindestens hinzufügen, wenn Sie Tabs und andere Whitespaces nicht möchten. Möchten Sie Registerkarten zulassen? –

+0

Ihr Beispiellink enthält keine neuen Zeilen. Fügen Sie auch die Sprache hinzu, in der Sie die Regex verwenden. – chris85

Antwort

0

A regex nicht Teile einer Zeichenfolge innerhalb einer Übereinstimmungsoperation „überspringen“ können. Also, was Sie brauchen, ist ein mehrstufiger Ansatz:

var s = "asda sda\nasdasda\n\n\nasdasdsa"; 
 
var re = /^[ A-Za-z0-9ığüşöçİĞÜŞÖÇ_.,#:&+-]*$/; 
 
console.log("Original string:", s); 
 
var isValid = s.split("\n").every(function (t) {return re.test(t); }); 
 
console.log("Valid:",isValid); 
 
if (isValid) { 
 
console.log("Record with no LF and empty:", s.split("\n").filter(Boolean).join(" ")); 
 
}

Hinweis Sie einen regulären Ausdruck verwenden können wie

/^[ A-Za-z0-9ığüşöçİĞÜŞÖÇ_.,#:&+-]*(?:\n+[ A-Za-z0-9ığüşöçİĞÜŞÖÇ_.,#:&+-]*)*$/ 

die gesamte mehrzeilige Eingabe zu bestätigen. Siehe its demo. Dann würden Sie isValid Codeteil zu

var isValid = /^[ A-Za-z0-9ığüşöçİĞÜŞÖÇ_.,#:&+-]*(?:\n+[ A-Za-z0-9ığüşöçİĞÜŞÖÇ_.,#:&+-]*)*$/.test(s); 

noch ersetzen, werden Sie die Zeilenumbrüche danach mit Leerzeichen ersetzen. Zur Unterstützung \r\n, \r und \n Zeilenumbruch Stilen, ersetzen split("\n") mit split(/\r\n?|\n/), \n+ mit (?:\r\n?|\n)+: s.split("\n").filter(Boolean).join(" ") kann mit einem regex wie

s.replace(/\n+/g, " ") 

HINWEIS ersetzt werden.

Verwandte Themen