Octave, 88 87 bytes
Thanks to MattWH for saving a byte (f(x)-48 vs f(x)-'0')
@(n,m,f=@num2str,a=n:m)a(a==cell2mat(arrayfun(@(x){sum((f(x)-48).^(1:nnz(f(x))))},a)))
To run:
>> f=@(n,m,f=@num2str,a=n:m)a(a==cell2mat(arrayfun(@(x){sum((f(x)-'0').^(1:nnz(f(x))))},a)))
>> f(0,1000)
ans =
1 2 3 4 5 6 7 8 9 89 135 175 518 598
Explanation
@(n,m, % Create an anonymous function and pass it n and m as paramteres
f=@num2str, % Will be using the num2str mehtod twice, set the variable f to the handle to save on bytes
a=n:m) % Create a vector 'a' and populate it with the numbers n through m
a(a== % Logically index into a, where the values of a match Disarium numbers
cell2mat( % Convert the cell array returned by arrayfun into a matrix, so we can use it in the logical index
arrayfun(@(x){ % Call the following function on every element of a, using the index named 'x'
sum( % Sum the matrix that results from the following computation
(f(x)-'0') % Convert the value at index x into a string, then break it into a matrix by subtracting the string '0'.
% This results in the matrix [1 3 5] for the number 135.
.^ % Compute the element-wise power with the following matrix
(1:nnz(f(x))) % Create a matrix with the range 1 to the length of the number at index x. This results in the matrix
% [1 2 3] for the number 135.
) % Closes the sum statement
},a) % Closes the arrayfun statement, passing the matrix a to be operated on
)
)