如何检查字符串的一部分并接受其后的任何内容?

时间:2013-12-01 02:57:08

标签: php jquery json

我很难写出这个问题。假设您在数据库中有两件事:

- “字符串”

- “字符串”

在PHP中,您使用此: “SELECT * WHERE string = stri%”

这将返回数据库中的两个字符串,因为 [百分号]是负责检查值是否具有这四个字母[stri]并接受它们,因为其余的没有没关系。


这不是问题。在jQuery中有类似 [%] 的东西吗?

我有以下代码。

if (ext == "jpg" || ext == "gif") {
} else {
   ext = ext + ".jpg";
}

很多时候,我的JSON可能会返回这样的内容:

nameofimage。的 JPG?1

这是被忽略的,因为 jpg?1 NOT 等于 jpg ,但它仍然是jpg。这就是我要问的原因......有没有什么可以用来检查扩展名的前三个字母并忽略其余的字母?

这样的事情:

if (ext == "jpg%" || ext == "gif%") {
//Do nothing, it's already a jpg or a gif
} else {
   ext = ext + ".jpg";
}

我尽力以正确的方式说出来。我希望这里有人可以帮助我。谢谢。

2 个答案:

答案 0 :(得分:2)

尝试string.contains()

if(ext.contains(".jpg") || ext.contains(".gif")) {

答案 1 :(得分:0)

我认为您正在寻找的方法是indexOf():

if (ext.indexOf('jpg') !== -1 || ext.indexOf('gif') !== -1) {
    // true
}

然而,不仅要检查扩展名,还要检查整个文件名,这样会更清晰,更安全。想象一下这个文件名:“somejpg.exe”。上述方法会将其视为“jpg”,而不是。最容易使用这些事情的正则表达式:

/\.(jpg|gif|png|bmp)$/.test('test.png'); // => true
/\.(jpg|gif|png|bmp)$/.test('test.gif'); // => true
/\.(jpg|gif|png|bmp)$/.test('hack_jpg.exe'); // => false