dataweave 中的 isAlpha 或 isAlphanumeric 未按预期工作
isAlpha or isAlphanumeric in dataweave not working as expected
我在有效负载中有 2 个键,我想验证它们的值,这是场景
{
"System" : "ABC",
"Number" : 123.45
},
{
"System" : "ABC123",
"Number" : "123abc"
}
我想验证字符串“System”是否只包含字符而不包含任何数字。
我尝试了 isAlphanumeric(payload[0].system)
或 contains(payload[0].system, /^[0-9]+$/
,但仍然无法给出正确的结果。如何确保系统只有字符而不是字母数字?
数字也一样,我想验证数字字段是否有任何字符?如果我使用 isNumeric(payload[0].number)
它不会验证小数,如果数字有小数则 return false,如果我使用 isDecimal(payload[0].number)
并且如果数字是 1234
则不会验证。
如何验证这 2 个字段?
请记住,在您的示例中,您为同一字段混合了 String
和 Number
类型; isDecimal
需要一个Number
,只用于判断Number
是否为十进制数。当您调用它时,您已经需要知道它是否是 Number
类型。如果您希望能够混合和匹配类型:
输入:
[{
"System" : "ABC",
"Number" : 123.45
},
{
"System" : "ABC123",
"Number" : "123abc"
},
{
"System": "AAAA-AAA",
"Number": "1234"
},
{
"System": "KLDJSKL2123",
"Number": 123
},
{
"System": "KLDJSLKFJ",
"Number": "123.45"
}]
数据编织:
%dw 2.0
import isAlpha from dw::core::Strings
var isNumericOrDecimal = (str: Number | String) ->
str match {
case is Number -> true
case str matches /^[\+\-]?\d*\.?\d+(?:[Ee][\+\-]?\d+)?/ -> true
else -> false
}
output application/json
---
payload map { System: isAlpha($.System), Number: isNumericOrDecimal($.Number) }
输出:
[
{
"System": true,
"Number": true
},
{
"System": false,
"Number": false
},
{
"System": false,
"Number": true
},
{
"System": false,
"Number": true
},
{
"System": true,
"Number": true
}
]
我在有效负载中有 2 个键,我想验证它们的值,这是场景
{
"System" : "ABC",
"Number" : 123.45
},
{
"System" : "ABC123",
"Number" : "123abc"
}
我想验证字符串“System”是否只包含字符而不包含任何数字。
我尝试了 isAlphanumeric(payload[0].system)
或 contains(payload[0].system, /^[0-9]+$/
,但仍然无法给出正确的结果。如何确保系统只有字符而不是字母数字?
数字也一样,我想验证数字字段是否有任何字符?如果我使用 isNumeric(payload[0].number)
它不会验证小数,如果数字有小数则 return false,如果我使用 isDecimal(payload[0].number)
并且如果数字是 1234
则不会验证。
如何验证这 2 个字段?
请记住,在您的示例中,您为同一字段混合了 String
和 Number
类型; isDecimal
需要一个Number
,只用于判断Number
是否为十进制数。当您调用它时,您已经需要知道它是否是 Number
类型。如果您希望能够混合和匹配类型:
输入:
[{
"System" : "ABC",
"Number" : 123.45
},
{
"System" : "ABC123",
"Number" : "123abc"
},
{
"System": "AAAA-AAA",
"Number": "1234"
},
{
"System": "KLDJSKL2123",
"Number": 123
},
{
"System": "KLDJSLKFJ",
"Number": "123.45"
}]
数据编织:
%dw 2.0
import isAlpha from dw::core::Strings
var isNumericOrDecimal = (str: Number | String) ->
str match {
case is Number -> true
case str matches /^[\+\-]?\d*\.?\d+(?:[Ee][\+\-]?\d+)?/ -> true
else -> false
}
output application/json
---
payload map { System: isAlpha($.System), Number: isNumericOrDecimal($.Number) }
输出:
[
{
"System": true,
"Number": true
},
{
"System": false,
"Number": false
},
{
"System": false,
"Number": true
},
{
"System": false,
"Number": true
},
{
"System": true,
"Number": true
}
]