我有一个用户可以输入域名的表单,我想验证他们是否输入了具有.com
或.net
的域。
所以,
www.example.com Or www.example.net //returns True
http://www.example.com/ Or http://www.example.net/ //returns True
www.example.au //returns False
www.example.com.au Or www.example.net.au //returns False
example.com Or example.net //returns True
我试过了:
var domain = "www.example.com";
if(domain.match(/([a-z])+\.(com|net)+/igm)) {
console.log(domain+" valid domain");
} else {
console.log(domain+" Invalid domain");
}
这有效,但它也会将域www.example.com.au
显示为有效。
有更好的方法吗?
答案 0 :(得分:2)
使用正则表达式检查URL是否以域结尾。
/\.(com|net)\/?$/i
$
将检查字符串是否以前一个字符结尾。
代码:
var domain = "www.example.com";
if (/\.(com|net)\/?$/i.test(domain)) {
console.log(domain + " valid domain");
} else {
console.log(domain + " Invalid domain");
}
答案 1 :(得分:1)
可用于多种用途的通用jquery函数。 tlds默认为.com或.net,但你可以提供一组tld用于其他用途
void TransferDataToReport()
{
DataTable dT = GetDataTableFromDGV(dataGridView1);
dSet.Tables.Add(dT);
try
{
dSet.AcceptChanges();
dSet.WriteXml(@"C:\Data.xml", XmlWriteMode.WriteSchema);
}
catch (FileLoadException) { }
ReportDocument cr = new ReportDocument();
string filePath = @"C:\CrystalReportData.rpt";
cr.Load(filePath);
cr.SetDataSource(dSet);
crystalReportViewer1.ReportSource = cr;
}
public DataTable GetDataTableFromDGV(DataGridView dgv)
{
DataTable dt = new DataTable();
foreach (DataGridViewColumn column in dgv.Columns)
{
dt.Columns.Add(column.Name, column.ValueType);
}
object[] cellValues = new object[dgv.Columns.Count];
foreach (DataGridViewRow row in dgv.Rows)
{
for (int i = 0; i < row.Cells.Count; i++)
{
cellValues[i] = row.Cells[i].Value;
}
dt.Rows.Add(cellValues);
}
return dt;
}
测试.gov
$.testDomain = function(domain, tlds) {
return new RegExp('\\.(' + (tlds || ['com', 'net']).join('|') + ')\\/?$', 'i').test(domain);
};
console.log($.testDomain('http://www.example.com/'));
当然,它不一定要加入jQuery,只是回答问题
console.log($.testDomain('http://www.example.gov/', ['gov']));
然后使用
var testDomain = function( ...