我正在寻找一个可以告诉我字符串可能被转换的数据类型的函数。 例子:
“28.98”导致浮动(。作为分隔符)
“44.332,95”导致浮动(作为分隔符)
“29/04/14”会产生日期(应该是国际化的 - >不同的日期格式)
“34.524”导致int(.as as delimited)
“所有其余”会产生字符串
理想情况下(这些是字符串的子类):
“something@example.com”会产生电子邮件
“+ 49/2234/234567”导致电话
是否有(开源)库可以做这样的事情?
谢谢!
答案 0 :(得分:5)
你有它。不是库,不健康的正则表达式,但它适用于您的示例。如果您需要其他相关内容,请添加更多示例。对评论中的批评或要求持开放态度。
function getType(str){
if (typeof str !== 'string') str = str.toString();
var nan = isNaN(Number(str));
var isfloat = /^\d*(\.|,)\d*$/;
var commaFloat = /^(\d{0,3}(,)?)+\.\d*$/;
var dotFloat = /^(\d{0,3}(\.)?)+,\d*$/;
var date = /^\d{0,4}(\.|\/)\d{0,4}(\.|\/)\d{0,4}$/;
var email = /^[A-za-z0-9._-]*@[A-za-z0-9_-]*\.[A-Za-z0-9.]*$/;
var phone = /^\+\d{2}\/\d{4}\/\d{6}$/g;
if (!nan){
if (parseFloat(str) === parseInt(str)) return "integer";
else return "float";
}
else if (isfloat.test(str) || commaFloat.test(str) || dotFloat.test(str)) return "float";
else if (date.test(str)) return "date";
else {
if (email.test(str)) return "e-mail";
else if (phone.test(str)) return "phone";
else return "string";
}
}
答案 1 :(得分:-2)
自从我使用JavaScript框架以来已经有一段时间了,但你正在做的工作相当简单。您可以通过检查字符串中是否存在逻辑差异(您在此处显示它们的方式)来自行完成。例如,您可以使用indexOf()
JavaScript函数检查字符串中是否存在@符号。如果同时包含点和逗号,则表示您获得浮点数。最后,28.98和34.524之间的差异无法以任何方式呈现,因为.
始终是数字的浮点标记,这意味着34.524是人类和计算机的浮点数。
希望它有所帮助 - 可能不是你要求的图书馆!
答案 2 :(得分:-2)
你可以使用像这样的对象来实现这个目的:
{
"float" : "^[-+]?[0-9]*\.?[0-9]+$",
"int" : "some regex",
"etc" : "some regex"
}
// Use RegExp to test the object elements against the value.
var patt1=new RegExp("e");
// When true you found your match.
patt1.test(value_to_test)
通过这些信息,您应该能够开发自己的图书馆并与全世界分享!
如果您需要额外帮助,请询问。
致以最诚挚的问候,
塞尔吉奥