2017-05-11 3 views
-2
正規表現

で新しい行を無視します。私のパターンである

しかし、私はまた、このような

asdasda 
asdasda 


asdasdsa 

私は何をすべきなど、新しい行を入力することができ、新たなlines.Userをしたいですか?

これは私の正規表現

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

である私は、新しい行を受け入れるようにしたいが、新しいラインのないように、すべての文字列をしたいです。リンクでは、新しい行なしで受け入れています。

ので、例では、新しい行

私は、angularjsをJavaScriptを使用していて

asdasda asdasda asdasdsa 

ないとして記録されるべきです。

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

スペースを '\ s'に変更しようとしましたか? – quackenator

+0

タブやその他の種類の空白を必要としない場合は、少なくとも '\ n'や' \ r'を追加することができます。タブを許可しますか? –

+0

あなたのサンプルリンクには新しい行はありません。また、正規表現を使用している言語を追加してください。 – chris85

答えて

0

正規表現では、1回のマッチ操作で文字列の一部をスキップすることはできません。だから、あなたが必要なものを、多段階のアプローチです:

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(" ")); 
 
}

あなたが全体の複数行入力を検証するために

​​

のような正規表現を使用することができます。 its demoを参照してください。その後、あなたはまだ

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

isValidコード部分を交換したい、あなたはスペースでその後改行を交換する必要があります。 (?:\r\n?|\n)+\r\n\rをサポートし、\n改行のスタイル、split(/\r\n?|\n/)split("\n")を置き換える、\n+するには:s.split("\n").filter(Boolean).join(" ")

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

NOTEのような正規表現に置き換えてもよいです。

関連する問題