php 中用正则表达式判断字符串是不是数字

PHP数字验证
<?php 
$num="134, 256.00,000.25";
if(preg_match("/[^\d-., ]/",$num))
{
echo "不是数字: ".$num;
}
else
{
echo "是数字: ".$num;
}
?>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28274571/viewspace-746903/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28274571/viewspace-746903/

<think>好的,用户想要查找一个字符串中是否包含某个子串的方法。我需要根据他们提供的不同编程语言的引用资料来整理回答。首先,他们提到了JavaScript的ES6方法,比如contains()、startsWith()、endsWith(),但记得contains现在可能被includes替代了。然后还有indexOf的方法,这在很多语言中都适用,比如JavaScript和PHP。接着是PHP中的strpos函数,需要注意返回值的处理,因为如果子串在开头会返回0,这时候用===来判断更准确。然后是Oracle的INSTR函数,这和Hive里的用法可能类似,判断返回值是否大于0。Java的话,可以用contains方法,或者用indexOf。另外用户还提到一个Java算法,可能需要遍历字符,但一般情况下直接用contains应该更高效。 需要把这些方法按不同语言分类,给出示例代码,并注意语法正确性。比如JavaScript中的includes可能更推荐,而contains可能已经废弃了。PHP中strpos的使用要注意,不能直接用if(strpos(...)),因为0会被当作false。Oracle的INSTR函数参数顺序是主串和子串,和PHP的strpos相反。Java的String类有contains方法,内部也是用的indexOf实现的。另外Hive的示例和Oracle类似,可能可以合并说明。 还要检查是否有遗漏的语言,比如用户提供的引用中有JavaScript、PHP、Oracle、Java、Hive,所以需要覆盖这些。每个语言的示例代码要正确,比如JavaScript中用s.includes("hello"),PHP中用strpos($str, '111') !== false,Oracle用INSTR(a, b) > 0,Java用str.contains("111"),Hive用instr(a, b) > 0。 最后生成相关问题,要确保问题与主题相关,比如不同语言的方法、性能差异、特殊字符处理、不区分大小写的情况,以及正则表达式的应用。注意问题的多样性和覆盖范围,帮助用户进一步学习相关知识点。 现在整理回答结构,分点说明每种语言的方法,代码示例用正确的格式,行内数学公式用$...$,独立公式不需要这里。引用标注在对应的段落末尾,使用[^n]的格式。然后生成相关问题,确保问题清晰且有针对性。</think>要检查一个字符串是否包含另一个子串,不同编程语言提供了多种实现方式。以下是常见方法的分类说明: ### 一、JavaScript 实现 1. **ES6 语法** - 使用 `includes()` 直接检测包含关系 - `startsWith()` 检测字符串开头 - `endsWith()` 检测字符串结尾 ```javascript const s = "hello world!"; console.log(s.includes("o")); // true console.log(s.startsWith("hello")); // true console.log(s.endsWith("!")); // true ``` 2. **传统方法 `indexOf`** 通过返回值是否大于等于0判断: ```javascript if (str.indexOf("111") >= 0) { alert('包含子串'); } ``` ### 二、PHP 实现 1. **`strpos()` 函数** 需注意严格类型判断(因位置0会误判为false): ```php if (strpos($str, '111') !== false) { echo '包含子串'; } ``` ### 三、Java 实现 1. **`contains()` 方法** 直接返回布尔值: ```java if (str.contains("111")) { System.out.println("包含子串"); } ``` 2. **`indexOf()` 方法** 与JavaScript逻辑一致: ```java if (str.indexOf("111") >= 0) { System.out.println("包含子串"); } ``` ### 四、数据库(Oracle/Hive) 1. **`INSTR` 函数** 通过返回值是否大于0判断: ```sql -- Oracle SELECT * FROM table WHERE INSTR(main_str, sub_str) > 0; -- Hive SELECT * FROM table WHERE instr(main_str, sub_str) > 0; ``` ### 五、性能对比 - `includes`/`contains` 语法简洁,直接返回布尔值,推荐优先使用[^1][^4] - `indexOf` 通用性更强,适合需要获取具体位置的场景[^1][^2] - 数据库函数 `INSTR` 在数据过滤时效率较高,但需注意参数顺序[^3][^5]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值