2013-10-02 58 views

回答

15

以下是此任務的RegEx爲的原因:

  1. 裏面/()/是你寫你想要的字符串中找到字符串的模式:

    /(ol)/這將找到字符串中的子ol

    var x = "colt".replace(/(ol)/, 'a');會給你x == "cat";

  2. /()/^\.+|\.+$由符號分離成2份| [手段或]

    ^\.+\.+$

    1. ^\.+裝置以找到許多.儘可能在開始。

      ^表示開始; \是逃避角色;加入+字符後面表示匹配含有一個任意字符串或多個字符

    2. \.+$裝置在結束時發現儘可能多的.越好。

      $意味着最後。

  3. m背後/()/用於指定,如果字符串有換行或回車符,^和$工作人員將會進行匹配,而不是一個串邊界對一個換行符邊界。

  4. 落後於/()/用於執行全局匹配:因此它找到所有匹配而不是在第一次匹配後停止。

要了解關於RegEx的更多信息,您可以查看this guide

+2

驚人的解釋,謝謝:3 –

+0

@NikolayTalanov歡迎您:3 –

8

嘗試使用以下正則表達式

var text = '...here..\n..there...\n.their.here.'; 
var replaced = text.replace(/(^\.+|\.+$)/mg, ''); 
1

使用正則表達式使用JavaScript Replace

var res = s.replace(/(^\.+|\.+$)/mg, ''); 
3

Here is working Demo

使用正則表達式/(^\.+|\.+$)/mg

  • ^代表在啓動
  • \.+一個或多個句號
  • $代表在結束

這樣:

var text = '...here..\n..there...\n.their.here.'; 
alert(text.replace(/(^\.+|\.+$)/mg, '')); 
2

這裏是一個非正則表達式的答案,它利用String.prototype

String.prototype.strim = function(needle){ 
    var first_pos = 0; 
    var last_pos = this.length-1; 
    //find first non needle char position 
    for(var i = 0; i<this.length;i++){ 
     if(this.charAt(i) !== needle){ 
      first_pos = (i == 0? 0:i); 
      break; 
     } 
    } 
    //find last non needle char position 
    for(var i = this.length-1; i>0;i--){ 
     if(this.charAt(i) !== needle){ 
      last_pos = (i == this.length? this.length:i+1); 
      break; 
     } 
    } 
    return this.substring(first_pos,last_pos); 
} 
alert("...here..".strim('.')); 
alert("..there...".strim('.')) 
alert(".their.here.".strim('.')) 
alert("hereagain..".strim('.')) 

,看看它在這裏工作:http://jsfiddle.net/cettox/VQPbp/

1

略多碼golfy,如果不讀,非正則表達式的原型擴展:

String.prototype.strim = function(needle) { 
    var out = this; 
    while (0 === out.indexOf(needle)) 
     out = out.substr(needle.length); 
    while (out.length === out.lastIndexOf(needle) + needle.length) 
     out = out.slice(0,out.length-needle.length); 
    return out; 
} 

var spam = "this is a string that ends with thisthis"; 
alert("#" + spam.strim("this") + "#"); 

Fiddle-ige

相關問題