regex - 我想在 Microsoft SQL Server 中编写一个函数来验证任何英国电话号码,如果有效则标记 1,如果无效则标记 0
问题描述
这是我的代码:
FUNCTION [dbo].[Vmobile](@mobileno VARCHAR(50))
--Returns true if the string is a valid mobile no.
RETURNS bit
AS
BEGIN
DECLARE @valid bit
IF @mobileno IS NOT NULL
SET @valid = 0
IF @mobileno like '^(?:0|\+?44)(?:\d\s?){9,10}$'
SET @valid=1
RETURN @valid
END
电话号码可以是任何英国格式,但应支持所有英国电话号码。乙
g :
(415) 555-0132
+44 313314332
098 765 1234
+447975777666
07975777666
xxx-xxx-xxxx
01332 412251
01332 412 251
+44 1332 412251
其中 X 可以是任意数字。Optional Plus 只能在第一个位置被允许。如果开头输入零,则零后应有 9 或 10 位。国家代码可以是可选的
解决方案
看来你得重新开始了。您似乎正在使用正则表达式来测试电话号码,并且 SQL Server LIKE 运算符不支持正则表达式。
如果您使用的是支持正则表达式的 DBMS,那么如果您链接到正则表达式文档,并且正如@Gordon Linoff 所建议的那样,解释您尝试匹配的模式,那么您将有更好的运气获得有用的答案。此外,请编辑标签,不要提及 SQL,因为 SQL 标准没有定义此功能,而是添加您正在使用的特定 DBMS。
推荐阅读
- c# - 信号器 ondisconnected 未触发
- c# - HtmlConverter.ConvertToPdf 我想像 PageSize.A4.Rotate() 一样旋转我的页面
- perl - 使用哈希或数组元素时如何绕过魔术钩子
- javascript - Bootstrap 混合下拉切换
- ruby-on-rails - ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column for `where` query when using includes
- forms - Symfony4 - 根据其他字段的值验证字段
- dart - 我可以在 Dart 中使用隐式类名吗?
- ios - 在领域中更新
- angular - 分配变量后的Angular 2响应{_body:“[object Object]”
- javascript - 如何检查设备是否正在使用 Java 在 android 中远程访问?或科尔多瓦的javascript?