如何编写用于JavaScript的正则表达式,以确保字符串的第一个和最后一个字符始终是数字?
r = /\D+/g;
var s = "l10ddd31ddd5705ddd";
var o = r.test(s);
console.log(o);
因此,1KJ25LP3665
将返回true,而K12M25XC5750
将返回false。
答案 0 :(得分:5)
您可以使用如下所示的正则表达式:
/^\d(.*\d)?$/
^
从字符串的开头开始匹配,$
从字符串的开头继续匹配。 \d
以匹配开头和结尾的数字。.*
,以匹配零个或多个字符。1
元字符使(.*\d)
=> ?
组为可选,以可选地匹配零个或多个以数字结尾的字符,直到字符串的末尾。如果字符串只有一个数字,这将有所帮助。答案 1 :(得分:1)
if(s.matches("\\d.*\\d"))
{
// Do what you want once both start and ending characters are digits
}
答案 2 :(得分:1)
此解决方案在没有正则表达式的情况下也能达到相同的结果。它还可以处理空字符串或仅包含一个字符的字符串。
function startsAndEndsWithDigits(string)
{
if(string.length>0)//if string is not empty
{
var firstChar = string.split('')[0];//get the first charcter of the string
var lastChar = string.split('')[string.length -1];//get the last charcter of the string
if(firstChar.length>0 && lastChar.length>0)
{ //if first and last charcters are numbers, return true. Otherwise return false.
return !isNaN(firstChar) && !isNaN(lastChar);
}
}
return false;
}
用法示例:
startsAndEndsWithDigits('1KJ25LP3665'); //returns true
startsAndEndsWithDigits('K12M25XC5750');//returns false
startsAndEndsWithDigits(''); //returns false
startsAndEndsWithDigits('a'); //returns false
startsAndEndsWithDigits('7'); //returns true