2017-04-21 23 views
0

開始或結束字符串我不是在正則表達式非常好,我需要遵循以下規則3分不同的正則表達式的:正則表達式來允許一個逗號,而不是在JavaScript中

  1. 我需要一個正則表達式,只有允許在字符串中的一個逗號
  2. 我需要一個正則表達式,它不允許在字符串開始時使用逗號,但仍然只允許使用一個逗號。
  3. 我需要一個正則表達式,它不允許在字符串末尾使用逗號,但仍然只允許使用一個逗號。

對於第一條規則:21, day會好的,但21, day, 32不會好的。

對於第二條規則:,21不會好的。

對於第三條規則:21,不會好的。

到目前爲止,我已經創建了一個正則表達式,它適用於上面的規則,但我想知道它是否可以分成三個不同的正則表達式,可以適應上述三個規則。

^[a-z0-9A-Z&.\/'_ ]+(,[a-zA-Z0-9&.\/'_ ]+)?$ 

任何幫助將不勝感激。 謝謝

+1

樣品的輸入和輸出將有幫助。 – Rahul

回答

4
  1. 只允許一個逗號(放一個?第二個逗號後面,如果你想使逗號可選):

    ^[^,]*,[^,]*$ 
    
  2. 只允許一個逗號,但沒有開頭:

    ^[^,]+,[^,]*$ 
    
  3. 只允許一個逗號,但沒有在最後:

    ^[^,]*,[^,]+$ 
    

[^,]裝置「的字符不是逗號「。

+0

* - 修飾符允許匹配零個字符 – kalsowerus

+1

當然,爲什麼不呢?他沒有詳細說明在逗號之前或之後必須有什麼。除了逗號之外,我必須明確指定它。這是這種情況的正確方法。 –

+0

當逗號之前有零個字符時,逗號就在開頭:規則2 – kalsowerus

0

這個正則表達式應該可以完成這項工作。

^[^,]+,[^,]+$ 

說明:

[^,]+ - >不用逗號至少一次

, - >逗號(顯然)

[^,]+ - >不用逗號至少一次(再次)

0
  1. ^(?!.*,.*,) - 這是拒絕經常性逗號的基本正則表達式。
  2. ^(?!,)(?!.*,.*,) - 用「沒有逗號底」相同的基 - 與加入條件
  3. ^(?!.*,.*,).*(?:[^,]|^)$「在開始沒有逗號」相同的基。後者是作爲替代組匹配實現的,因爲lookbehinds在JavaScript中不可用。

注意:所有這些模式都允許輸入零或一個逗號。如果您需要嚴格使用一個逗號,請用^(?=.*,)作爲前綴。

0

簡單的字符串操作可以處理這個問題:

function testForComma(str) { 
 
    //Comma isn't first character 
 
    //Comma only exists once 
 
    //Comma isn't last character 
 
    return str.indexOf(',') >= 1 && 
 
     str.lastIndexOf(',') == str.indexOf(',') && 
 
     str.lastIndexOf(',') != str.length - 1; 
 
} 
 
console.log(testForComma(',')); 
 
console.log(testForComma(', ')); 
 
console.log(testForComma(' ,')); 
 
console.log(testForComma(' , ')); 
 
console.log(testForComma(' ,, '));

0

簡單的表達就像是 -^[^,] +,[^,] + $

相關問題