HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0403
正規表現を使った、IPv4アドレスかどうかの判定7解決


リンク

2013/4/3(Wed) 19:15:52|NO.53403

題名の通り、正規表現を使って、"対象文字がIPv4アドレス(111.222.111.222形式)かどうかを判定"させたい
のですが、HSPで正規表現って使えますか?



この記事に返信する


k5342

リンク

2013/4/3(Wed) 19:18:57|NO.53404

mod_regexpというモジュールをインクルードすることで正規表現は利用可能です



KA

リンク

2013/4/3(Wed) 20:48:22|NO.53407

正規表現を使うまでもなく、数値範囲で判断した方が使いやすいでしょう。



inovia

リンク

2013/4/3(Wed) 21:08:03|NO.53408

こういう判定方法もあります。
http://chokuto.ifdef.jp/advanced/function/inet_addr.html


#uselib "ws2_32.DLL" #cfunc inet_addr "inet_addr" str ip = "111.222.111.222", "0:0:0:0:0:0:0:1", "hsp.tv", "0.O.0.O" repeat length(ip) mes ip(cnt) if inet_addr(ip(cnt)) == -1{ mes "IPv4アドレスではない\n" }else{ mes "IPv4アドレスです\n" } loop



リンク

2013/4/3(Wed) 22:36:54|NO.53413

>k5342さん
調べてみます、ありがとうございます。

>KAさん
確かに、以前までは.で区切って4つの数字をstr(int())して比較していました
でも、時々0002.3.7.009 とかを入力する方がいましてw

>inoviaさん
すごく便利ですね!使わせていただきます
ありがとうございます

inet_addr(ip(cnt)) == -1
この-1はエラーということで、0xFFFFFFFFのことなのでしょうか。



GENKI

リンク

2013/4/3(Wed) 22:54:27|NO.53414

正規表現だとこんな感じかな?

^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$



inovia

リンク

2013/4/3(Wed) 22:55:54|NO.53415

>この-1はエラーということで、0xFFFFFFFFのことなのでしょうか。

HSPの整数型は符号付き32bitとして扱われるので、0xFFFFFFFF = -1 となります。


mes 0xFFFFFFFF

すると-1と返ってくるのが分かるかと。



晩御飯

リンク

2013/4/3(Wed) 22:59:50|NO.53417

もう少し縮められないこともない
^(\d{1,3})(\.(\d{1,3}){3})$




ONION software Copyright 1997-2023(c) All rights reserved.