如何知道字符串以javascript中的特定字符开始/结束? [复制]
Posted
技术标签:
【中文标题】如何知道字符串以javascript中的特定字符开始/结束? [复制]【英文标题】:How to know a string starts/ends with specific character in javascript? [duplicate] 【发布时间】:2013-05-18 12:34:00 【问题描述】: var file = "employee";
var imgFile = "cancel.json";
if(file starts with '' and file ends with '' )
alert("invalid");
if(imgFile ends with '.json')
alert("invalid");
如何使用javascript验证字符串的开始和结束字符?
在“文件”中,字符串不应以 '' 开头,也不应以 '' 结尾
在“imgFile”中,字符串不应以“.json”结尾
match() 有效还是我应该使用 indexOf()
【问题讨论】:
看看charAt()
,那里有一些例子展示了如何获取字符串的第一个/最后一个字符
参见:endsWith() in javascript。
另见:Javascript StartsWith
【参考方案1】:
你可以使用javascript的startswith()和endswith()
function strStartsWith(str, prefix)
return str.indexOf(prefix) === 0;
function strEndsWith(str, suffix)
return str.indexOf(suffix, str.length - suffix.length) !== -1;
or
function strEndsWith(str, suffix)
var re=new RegExp("."+suffix+"$","i");
if(re.test(str)) alert("invalid file");
或者你也可以像这样使用它:
String.prototype.startsWith = function (str)
return this.slice(0, str.length) == str;
;
and
String.prototype.endsWith = function (str)
return this.slice(-str.length) == str;
;
【讨论】:
工作正常,除非后缀包含特殊的 RegEx 字符,如 .或/或*。 @HBP:即使是这里的情况(.json
),所以这个答案是无效的
您可以要求更正它,如果您有权投反对票并且 >1k 代表并不意味着您可以继续投反对票..【参考方案2】:
match() 有效还是我应该使用 indexOf()
两者都没有。两者都有效,但都搜索整个字符串。在相关位置提取子字符串并将其与您期望的位置进行比较会更有效:
if (file.charAt(0) == '' && file.charAt(file.length-1) == '') alert('invalid');
// or: file.slice(-1) == ''
if (imgFile.slice(-5) == '.json') alert('invalid');
当然,你也可以使用正则表达式,借助智能正则表达式引擎,它应该也很高效(而且你的代码更简洁):
if (/^\[\S\s]*$/.test(file)) alert('invalid');
if (/\.json$/.test(imgFile)) alert('invalid');
【讨论】:
这并不严格满足“不能以开头,不能以结尾”的条件 @Jack:是的,为此您需要将&&
替换为||
。我没有按照文字描述,而是修改了具有 if 以 then 开头和结尾的 OPs 代码无效 ...
啊!好点,没有意识到代码和“规格”不同:)【参考方案3】:
这个
/^\.*\$/.test (str)
将返回 true 的 str
以 开头并以
结尾
【讨论】:
…并且不包含行终止符:-)【参考方案4】:在字符串验证方面你有很多选择,你可以使用正则表达式..不同的字符串方法也可以为你完成这项工作......
但是你的问题你可以尝试以下方法:
if(file.indexOf('') == 0 && file.indexOf('') == file.length - 1)
alert('invalid');
对于第二部分,您很可能正在寻找文件的扩展名,因此您可以使用以下内容:
if(imgFile.split('.').pop() == "json")
alert('invalid');
希望这会有所帮助....
【讨论】:
【参考方案5】:file.indexOf("") == 0 && file.lastIndexOf("") == file.length-1
【讨论】:
【参考方案6】:在“文件”中,字符串不应以''开头,也不应以''结尾
if (file.charAt(0) == '' || file.charAt(file.length - 1) == '')
throw 'invalid file';
在“imgFile”中,字符串不应以'.json'结尾
if (imgFile.lastIndexOf('.json') === imgFile.length - 5)
throw 'invalid imgFile';
【讨论】:
【参考方案7】:if (str.charAt(0) == 'a' && str.charAt(str.length-1) == 'b')
//The str starts with a and ends with b
未经测试,但应该可以工作
【讨论】:
以上是关于如何知道字符串以javascript中的特定字符开始/结束? [复制]的主要内容,如果未能解决你的问题,请参考以下文章