2017-09-12 39 views
2

私は正規表現を使用して、ユーザーによる値の入力が有効かどうかを検証しています。しかし、それが有効な値ではありませんというエラーを与えるRegexはアプリケーションでは動作しませんが、ウェブサイトでも動作します

500.21 
500,21 

string value = "500,21"; 
bool is_valid = Regex.IsMatch(value, "/^[0-9]+([,.][0-9]{2,2})?$/"); 

コードのこの作品は次のように値を受け入れる必要があります。 https://www.regextester.com/またはhttps://regex101.com/のようなウェブサイトを使用する際に

はしかし、私の正規表現は、あなたがここにhttps://regex101.com/r/s6Cl9I/1

+2

ウェブサイトで正規表現をテストする場合、.Netが使用するエンジンがサポートされていることを確認してください。すべての正規表現エンジンが同じではありません。 – juharr

+3

これらの '/'を削除します –

+0

@ L.Bありがとう、働いた。 – Linesofcode

答えて

2

フォワードスラッシュは、二重引用符が文字列の境界を示すのと同じように、正規表現の境界を示すJavaScriptの方法です。たとえば、JavaScriptで次の2つの式は等価です:彼らはJavaScriptのコンテキストで考えているので、

/^[0-9]+([,.][0-9]{2,2})?$/.test("500,21") 

new RegExp("^[0-9]+([,.][0-9]{2,2})?$").test("500,21") 

オンライン正規表現テスターは、多くの場合、あなたのためにそれらのフォワードスラッシュを追加します。しかし、それらは実際に正規表現自体の一部ではありません。

C#では、正規表現を文字列として渡すので、これらのスラッシュは必要ありません。

string value = "500,21"; 
bool is_valid = Regex.IsMatch(value, "^[0-9]+([,.][0-9]{2,2})?$"); 
0

C#は好きではないで見ることができるように完璧に動作し、あなたの表現の最初と最後に/さん。正規表現エンジンは異なるフォーマットと特殊文字を持つことができるので注意してください!

関連する問題