2017-08-01 43 views
0

我有正則表達式,應該檢查參數的名字。我的字符串可以包含'.,(space)-。除了一個字符外,我已經測試過正則表達式true。如果我來例如Ben's正則表達式的名字返回false。這是我的正則表達式:正則表達式檢查的名字? ColdFusion

<cfset fname = len(trim(arguments.fname)) AND REFind("(?i)^ *[a-z][a-z' .,-]{0,29} *$",trim(arguments.fname),true) EQ 1> 

我不確定是否有其他事情導致我的正則表達式失敗。如果有人看到我的代碼中存在問題,請告訴我。謝謝!

+0

如果使用'trim(arguments.fname)',則不需要在模式中使用'space *'。 –

+0

@WiktorStribiżew問題是單引號/撇號。如果我傳遞硬編碼的值,例如Ben's返回true,但是如果我將相同的值與返回false的參數一起傳遞。我很困惑我的代碼中的問題在哪裏...... –

+0

如果輸入字符串沒有''',那麼問題可能在其他任何地方,而是一些'''。 –

回答

0

這會讓你開始。

patternOnlyCertainCharacters = "[^ 0-9a-zA-Z.\-]"; 
testString = "1.- ~"; 
writeoutput(refind(patternOnlyCertainCharacters, testString)); 

方括號,

^ is an anchor 
There is a space between the^and 0 characters 
0-9a-zA-Z allows any number or letter, upper or lower case 
. is a period 
\- is a hyphen, escaped by a backslash 

你的工作是正確添加要允許其他字符,如逗號,並決定如何將結果應用到您的傳入的字符串。