こんにちは皆私はJavaScriptで作成した正規表現を持っていますが、今はそれらをColdFusionに入れたいと思います。これをColdFusionに入れようとしているときに実行したいくつかの問題は、最初は空白の値であった。私の変数が空の場合、私の正規表現はfalse
を出力していました。 2番目の問題は、私のテキストファイルの行全体をチェックする1つの大きな行にこれらの正規表現を組み合わせています。何らかの理由で私の正規表現は大文字小文字を無視していました。私が小文字だけを持っていれば、私の正規表現はこの場合でも許されないとしても真実を出力していました。私のデータセットでこの場合の最後の言葉でそう正規表現をJavaScriptからColdFusionに変換しますか?
<cfset fileRegex = "^(?i)^ *[a-z][a-z' .,-]{0,49} *\t(?i) *[a-z][a-z' .,-]{0,49} *\t *(0?[1-9]|1[0-2])\/(0?[1-9]|1\d|2\d|3[01])\/(19|20)\d{2} *\t(?i) *([M|F]) *\t(?i) *(0?[0-9]|1[0-2]|[A-Z]{1,2}) *\t *([^\t].{0,50}) *\t(?i) *([A-Z0-9 ,]{1,102})? *\t *\d{10} *(\t[^\t]*){22}\t *([0-9]{1,4}) *\t([^\t]*)(\t *[A-Z ',.-]{1,50} *)?$">
<cfset myData = "John Terry 1/29/1981 M 0 London NULL 0129198109 609 8000 1 England">
<cfif REFind(fileRegex,myData,true) GT 0>
true<br>
<cfelse>
false<br>
</cfif>
England
され、私の正規表現は大文字を受け入れなければならないと私はFalse
を取得しますこのフィールドを空のままにした場合には、第二の問題はありません。ここに私の正規表現がありますその代償としてまた、この最後の言葉はオプションです。私がタブと一緒にそれを消去すると、私はtrue
を得なければなりません。誰かがこの問題を助けることができるなら私に知らせてください。
[あなたの正規表現は文字列と一致しません](https://regex101.com/r/RchZSn/1) '(\ t [^ \ t] *){22}'は22個のカラム。それを '(\ t [^ \ t] *){0,22} 'と置き換えるとうまくいきます。 [このデモ](https://regex101.com/r/RchZSn/3)を参照してください。 –
@WiktorStribiżewそれは私の22の列を任意にするでしょうか? –
はい、そうです。 '(?i)'がたくさんあることに注意してください。これは必須ではありません。パターンの先頭にある1つの '(?i)'で十分です。また、 '[M | F]'の中の '|'は、リテラルパイプシンボルとして解析されるので、取り除かなければなりません。 –